关于#c语言#的问题:验证哥德巴赫猜想

img

img

img

要怎么改代码才能实现不重复输出
帮忙看看题目,跟我整不会了这个题目。
没有思路怎么实现不重复输出,来点容易理解的,刚入门

-

把第二个for循环的初始条件改为j=i ,第三个for循环的初识条件改为k=j即可,这样就可以逐步从当前最小的数开始往上判断,可以排除重复列举的情况,修改如下:

#include <stdio.h>

int isprime(int n){
    
    int i=0;
    for(i=n-1;i>1;i--){
        if(n%i==0){
            return 0;
        }
    } 
    
    return 1;
} 

int main(void){
    
    int i,j,k;
    int n=0;
    scanf("%d",&n);
    
    for(i=2;i<n;i++){
        for(j=i;j<n;j++){
            for(k=j;k<n;k++){
                if(isprime(i)&&isprime(j)&&isprime(k)&&(n==i+j+k)){
                    printf("%d=%d+%d+%d\n",n,i,j,k);
                }
            }
        }
    }
    
    return 0;
}

img

再加上一个条件i<=j&&j<=k