不同的产品对

时间:2017-04-23 09:59:12

标签: c

我必须在C中编写一个程序,给定一个整数列表,找到所有具有相同产品的2对整数。 2对是2对不同的整数((a,b),(c,d)),其中X b = c X d且a≠b≠c≠d。列表中的整数范围应为1到1024。

我正在展示我写的代码。问题是我不知道如何使它们与众不同。我有很多重复对。它与一个好的算法有关。感谢。

#include <stdio.h>
#define NUM 10

int main () {

    int list[1024]; /* list1 is an array of 1024 integers */
    int multiplication[9999];
    int i,j,k,l,m=1,n=0,repeated=0;

    /* filling list with integers from 1 to 1024*/
    for ( i = 0; i < NUM; i++ ) {
        list[i] = i+1;
    }


    for (i = 0; i < NUM/2; i++ ) {

        for (j = 0; j < NUM; j++) {

            for (k = 0; k < NUM; k++ ) {

                for (l = 0; l < NUM; l++) {

                    if ((list[i]!= list[j] && list[i] != list[k] && list[i] != list[l] && list[j] != list[k] && list[j] != list[l] && list[k] != list[l]) && list[i] * list[j] == list[k] * list[l] && list[k] * list[l] != multiplication[m-1] ){
                        multiplication[m] = list[i]*list[j];
                        m++;

                        for(n=0; n<m; n++){
                            if(list[k] * list[l] == multiplication[n]){
                                repeated = 1;

                            }
                            else repeated =0;
                        }
                        if (repeated == 1){
                        printf ("%d*%d = %d*%d \n", list[i], list[j], list[k], list[l]);
                        }


                    }
                }
            }
        }
    }
    for (i = 0; i < m; i++ ) {
        printf ("%d\n", multiplication[i]);
    }


    return 0;
}

1 个答案:

答案 0 :(得分:0)

我相信以下内容会产生这些数字:

#define NUM 10

int mainX () {

    int i,j,k,l;

    for (i = 1; i <= NUM/2; i++ ) {

        for (j = i; j <= NUM; j++) {

            for (k = i+1; k <= NUM; k++ ) {

                for (l = k; l <= NUM; l++) {

                    if (i*j == k*l && i!=k && i!=l && j!=k && j!=l)
                        printf ("%d * %d = %d * %d\n", i,j,k,l);
                }
            }
        }
    }
    return 0;
}

输出:

1 * 4 = 2 * 2
1 * 6 = 2 * 3
1 * 8 = 2 * 4
1 * 9 = 3 * 3
1 * 10 = 2 * 5
2 * 6 = 3 * 4
2 * 8 = 4 * 4
2 * 9 = 3 * 6
2 * 10 = 4 * 5
3 * 8 = 4 * 6
3 * 10 = 5 * 6
4 * 9 = 6 * 6
4 * 10 = 5 * 8