| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 398 人关注过本帖
标题:程序好像没有问题,可是得不出答案
只看楼主 加入收藏
蔡梓锋
Rank: 4
等 级:业余侠客
帖 子:106
专家分:202
注 册:2013-4-20
结帖率:100%
收藏
 问题点数:0 回复次数:1 
程序好像没有问题,可是得不出答案
#include "stdio.h"
main()
{long i,j,x=0,k;
    for(i=2;;i++)
    {k=1;
    for(j=2;j<i;j++)
        if(i%j==0)
            {k=0;
            break;}
        if(k==1)
            x++;
   
    if(x==100002)
    {
    printf("%ld",i);
    break;}
    }

}
素数就是不能再进行等分的整数。比如:7,11。而9不是素数,因为它可以平分为3等份。一般认为最小的素数是2,接着是3,5,...
请问,第100002(十万零二)个素数是多少?
请注意:“2” 是第一素数,“3” 是第二个素数,依此类推。
把x==100002改小些就可以,是不是出现了什么越界啦!答案老师答不出。
搜索更多相关主题的帖子: include 
2013-06-16 21:48
菜鸟一支
Rank: 6Rank: 6
来 自:何美杭
等 级:侠之大者
威 望:1
帖 子:121
专家分:456
注 册:2012-10-10
收藏
得分:0 
不是越界的问题,而是你的算法太费时, 你用的是for(j=2;j<i;j++),等到i变到100002时菜都凉了
素数判定--朴素方法
对于正数n,用i∈ [2,n]或i∈ [2,n/2]或i∈ [2,√n]依次试除,若n/i不等于0在整个区间成立,则n是素数。
程序给你改了下:
#include "stdio.h"
#include <math.h>
main()
{long i,j,x=0,k;
    for(i=2;;i++)
    {k=1;
    for(j=2;j<sqrt(i);j++)                    //判断到根号i就行
        if(i%j==0)
            {k=0;
            break;}
        if(k==1)
            x++;
   
    if(x==100002)
    {
    printf("%ld",i);
    break;}
    }
    return 0;                    //注意函数一定要有返回值,(viod除外),养成好习惯
}

小弟何美杭,所发表的都仅代表个人观点,欢迎批评指正。
2013-06-16 21:57
快速回复:程序好像没有问题,可是得不出答案
数据加载中...
 
   



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

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