标题:关于孪生素数,各位帮忙看一下代码本身有没有逻辑错误。
只看楼主
天天涯涯
Rank: 4
等 级:业余侠客
帖 子:215
专家分:267
注 册:2011-10-17
得分:0 
祝你好运
2012-02-25 17:39
天天涯涯
Rank: 4
等 级:业余侠客
帖 子:215
专家分:267
注 册:2011-10-17
得分:0 
回复 10楼 beyondyf
下午又测试了一下,发现错误是
             for(i=0;i<j;i++)
             if(m>=b[i]&&m<b[i+1])
             {
                co=a[i];
                break;
             }
当数据足够大时会发现b[i+1]不存在,那么输出的就是上一次能够存在b[i+1]的数的co
2012-02-25 18:19
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:0 
回复 10楼 beyondyf
求杨大哥的思路

                                         
===========深入<----------------->浅出============
2012-02-25 20:27
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
回复 13楼 laoyang103
就是直接统计
程序代码:
#include<stdio.h>
#define L    1000000
char p[L] = {1, 1};
short int q[L] = {0, 0, 0, 1};
int main()
{
    int i, j;
    for(i = 2; i < L; i++)
    if(!p[i]) for(j = i + i; j < L; j += i) p[j] = 1;
    for(i = 4; i < L; i++) q[i] = q[i - 1] + !(p[i] || p[i - 2]);
    for(scanf("%d", &i); i--; printf("%d\n", q[scanf("%d", &j), j]));
    return 0;
}

重剑无锋,大巧不工
2012-02-25 20:55
laoyang103
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:内蒙古包头
等 级:贵宾
威 望:19
帖 子:3082
专家分:11056
注 册:2010-5-22
得分:0 
回复 14楼 beyondyf
杨大哥的代码果然短小精悍   看到20MS的成绩 我以为不能再O(n)时间内完成

看来我还是太小看计算机的运算速度了。。。

                                         
===========深入<----------------->浅出============
2012-02-26 09:09
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
得分:0 
现在的电脑每秒运算上亿次很正常,巨型机已经达到1亿亿次的数量级了(日本.京,中国.天河一号现在排名第二,二千五百万亿次每秒)。


重剑无锋,大巧不工
2012-02-26 09:42



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-361600-1-1.html




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

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