| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 818 人关注过本帖
标题:一个哥德巴赫猜想程序代码的不解之处
只看楼主 加入收藏
lotoze
Rank: 1
等 级:新手上路
威 望:1
帖 子:13
专家分:5
注 册:2016-9-18
结帖率:66.67%
收藏
已结贴  问题点数:10 回复次数:1 
一个哥德巴赫猜想程序代码的不解之处
代码中的i, j, k变量分别起什么作用?代表着什么?这里不是表示循环的控制变量吗?

#include <stdio.h>
int main(){
    int ss(int i);
    int i, j, k, flag1, flag2, n=0;
    for(i = 4; i<100; i+=2)   
        for(k = 2; k<=i/2; k++){
            j = i-k;
            flag1 = ss(k);
            if(flag1){            //这里if中的判断条件为什么是这样?以前碰到的都是有运算符号的,这样也算是判断条件?
                flag2 = ss(j);
                if(flag2){
                    printf("%3d=%3d+%3d", i, k, j);
                    n++;
                    if(n%5 == 0){
                        printf("\n");
                    }
                }
            }
        }
}

int ss(int i){
    int j;
    if(i <= 1)
        return 0;
    if(i == 2)
        return 1;
    for(j = 2; j<i; j++){
        if(i%j == 0)
            return 0;
        else if(i != j+1)       //这里为什么要判断i != j+1?
            continue;           //这里用break;可以吗?
        else
            return 1;
    }
}
搜索更多相关主题的帖子: 哥德巴赫 include 
2017-03-13 00:59
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10607
专家分:43186
注 册:2014-5-20
收藏
得分:10 
代码可以精简些,试试:
#include <stdio.h>
#include <math.h>

int ss(int i)
{
    int j;
    if(i <= 1)
        return 0;
    if(i == 2)
        return 1;
    for(j=2; j<=sqrt(i); j++)
        if(i%j == 0)
            return 0;
    return 1;
}

main()
{
    int i, j, k;
    for(i = 4; i<100; i+=2)
        for(k = 2; k<=i/2; k++)
            if (ss(k) && ss(i-k))
                printf("%d = %d + %d\n", i, k, i-k);
}
2017-03-13 06:19
快速回复:一个哥德巴赫猜想程序代码的不解之处
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033587 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved