我写了下面的代码,但它给出了重复的输出。例如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;

}

最佳答案

只需这样做:

for(side2=side1;side2<=till;side2++){

即改变这个循环的开始值。这样,您只会找到side2>=side1的三元组,并且永远不会同时计算(side1, side2, hyp)类型的三元组和(side2, side1, hyp)类型的三元组

关于c - 如何从毕达哥拉斯三联体代码中过滤重复的三胞胎?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15114054/

10-14 09:55