我写了下面的代码,但它重复了输出。如3,4,5和4,5,3和5,4,3。它显示了相同的三元组。我该如何防止这种情况?
#include <stdio.h>
int main(void){
int side1=1;
int side2=1;
int hypotenus=1;
int till;
int count=0;
printf("Till what number do you want to find triplets?");
scanf("%d",&till);
for(side1=1;side1<=till;side1++){
for(side2=1;side2<=till;side2++){
for(hypotenus=1;hypotenus<=till;hypotenus++){
if(hypotenus*hypotenus==side1*side1+side2*side2){
count++;
printf("%5d %5d %5d is a triple \n",side1,side2,hypotenus);
}
}
}
}
printf("\n");
printf("%d triplets found.",count);
return 0;
}
答案 0 :(得分:5)
只需这样做:
for(side2=side1;side2<=till;side2++){
即改变此循环的起始值。通过这种方式,您只能找到side2&gt; = side1的三元组,并且永远不会计算(side1, side2, hyp)
类型的三元组和(side2, side1, hyp)
类型的三元组