| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 617 人关注过本帖
标题:各位大神,求第100002个数素是什么,程序出了,答案出不了,
只看楼主 加入收藏
loveClangage
Rank: 8Rank: 8
来 自:广东云浮
等 级:蝙蝠侠
帖 子:326
专家分:891
注 册:2013-8-23
结帖率:100%
收藏
已结贴  问题点数:25 回复次数:6 
各位大神,求第100002个数素是什么,程序出了,答案出不了,
程序代码:
#include<stdio.h>
#include "StdAfx.h"
int sushu(int m)//判断m是不是素数
{
    for(int i=2;i<m;i++)
    {
        if(m%i==0)
           return 0;
    }
    return 1;
}

 void main()

 {
     int count=1;//数素个数,
     int n=3;
     while(count<100002)
     {
         if(sushu(n)==1)
          count++;
         n++;
     }
     printf("%d",n);
   
     int x;
     while(1)
     scanf("%d",&x);

 }

你们看看是算法问题,还是什么,求解,
2013-11-17 23:30
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:7 
那个"判断素数"的函数是你自己写的吧...
复杂度太高,浪费时间太多...   下面是根据你的程序作了一些改动  供你参考
程序代码:
#include<stdio.h>
int sushu(int m)
{
    int i;
    if(m==2)
        return 1;
    for(i=3;i*i<=m;i+=2)
    {
        if(m%i==0)
            return 0;
    }
    return 1;
}
void main()
{
    int count=1,n=2;
    while(count<100002)
    {
        if(n%2==0)
            n++;
        if(sushu(n)==1)
            count++;
        n++;
    }
    printf("%d\n",n-1);
}


三十年河东,三十年河西,莫欺少年穷!
2013-11-18 00:37
pink_duo
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
帖 子:209
专家分:1054
注 册:2013-11-5
收藏
得分:7 
程序没仔细看,while(count<100002),count有越界可能
32位下,int变量的范围-32768~32767,这里建议用long int count

[ 本帖最后由 pink_duo 于 2013-11-18 08:13 编辑 ]

埋头做牛,抬头做人,低头做狗
2013-11-18 08:04
loveClangage
Rank: 8Rank: 8
来 自:广东云浮
等 级:蝙蝠侠
帖 子:326
专家分:891
注 册:2013-8-23
收藏
得分:0 
回复 2楼 韶志
这是我自己写的,你的有答案,我的为什么出不了呢,求解,。。


[ 本帖最后由 loveClangage 于 2013-11-18 14:31 编辑 ]

编写的程序,不能改变世界,却可以改变自己...
2013-11-18 14:20
依心木瓜
Rank: 2
等 级:论坛游民
帖 子:9
专家分:30
注 册:2013-1-9
收藏
得分:7 
回复 3楼 pink_duo
3楼说得有道理,但是32位范围是-2147483648~+2147483647,2楼的程序是对的。
2013-11-18 14:51
韶志
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:斗气大陆
等 级:贵宾
威 望:44
帖 子:2223
专家分:13592
注 册:2013-3-22
收藏
得分:0 
回复 4楼 loveClangage
你的程序我没发现什么错误,首先可以肯定不会是count越界造成(范围并不是三楼所说那么小)
我看到的不当的地方可能就是素数的判断吧,不知道能不能按照你的写
有可能是程序运行需要比较长的时间?  不确定,坐等其他人的看法

三十年河东,三十年河西,莫欺少年穷!
2013-11-18 16:18
czz5242199
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:小飞侠
威 望:4
帖 子:660
专家分:2400
注 册:2011-10-26
收藏
得分:7 
明显是时间太高啊,改下算法啊,比如烂大街的筛选法
2013-11-18 18:12
快速回复:各位大神,求第100002个数素是什么,程序出了,答案出不了,
数据加载中...
 
   



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

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