| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1704 人关注过本帖, 1 人收藏
标题:关于哥德巴赫猜想,有兴趣的进来看下评论下,没兴趣的请无视。
只看楼主 加入收藏
观弈寒儒
Rank: 7Rank: 7Rank: 7
来 自:自 来
等 级:黑侠
帖 子:359
专家分:545
注 册:2011-1-9
收藏
得分:0 
回复 9楼 pcbaichi
只要加上一句Sleep(10);就可以了

事件记录,值得关注! http://bbs.bccn.net/z_court.php?fid=5
2011-02-27 13:30
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
以下是引用观弈寒儒在2011-2-27 13:21:24的发言:

很大程度上是相同的,少了一个for,应该比较优越,你这个程序最大的不足是运行时CPU的占有率是100%。

一个程序的运行时 CPU 占用率是 100% 不是好事吗~ 说明资源利用充分。
2011-02-27 22:38
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:10 
是不是先筛出一定范围内的质数,做个 hash 表再分解其它的数要好一些。

程序代码:
#include <stdio.h>
#include <memory.h>

#define M 10000
char isprime[M];

int main(int argc, const char *argv[])
{
    memset(isprime, 1, sizeof(isprime));
    isprime[0] = isprime[1] = 0;

    int i, j;
    for (i = 2; i < M; i++) // set isprime.
    {
        if (isprime[i]) {
        for (j = i+i; j < M; j += i)
            isprime[j] = 0;
        }
    } 

     /*
    for (i = 0; i < M; i++)
        if(isprime[i]) printf("%d", i);
    */

    // test Goldbach
    int flag = 0;
    for (i = 6; i < M; i += 2) {
        for (j = 3; j < i; j++)
            if (isprime[j] && isprime[i-j])  {
                // printf("%d = %d + %d\n", i, j, i-j);
                break;
        }
        if (j == i) {
            flag = 1;
            printf("failed number: %d\n", i);
        }
    }

    if (!flag) printf("all test passed.\n");

    return 0;
}



[ 本帖最后由 pangding 于 2011-2-27 23:15 编辑 ]
收到的鲜花
2011-02-27 22:47
快速回复:关于哥德巴赫猜想,有兴趣的进来看下评论下,没兴趣的请无视。
数据加载中...
 
   



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

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