gpt4 book ai didi

c - 不同的产品对

转载 作者:行者123 更新时间:2023-11-30 19:34:38 24 4
gpt4 key购买 nike

我必须用 C 语言编写一个程序,给定一个整数列表,找到具有相同乘积的所有 2 对整数。 2 对是 2 个不同的整数对 ((a,b),(c,d)),其中 a 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;
}

最佳答案

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

#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

关于c - 不同的产品对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43569690/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com