| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 5086 人关注过本帖
标题:小弟不才只写出了500以内的素数,500以内最大的10个素数和写不出来,求指导 ...
只看楼主 加入收藏
huat107
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-11-18
收藏
得分:0 
貌似没求出来唉~~
2012-11-19 18:59
愤怒的木瓜
Rank: 1
来 自:云南
等 级:新手上路
帖 子:12
专家分:8
注 册:2012-11-19
收藏
得分:2 
回复 11楼 huat107
运行结果4696~~
2012-11-19 19:06
愤怒的木瓜
Rank: 1
来 自:云南
等 级:新手上路
帖 子:12
专家分:8
注 册:2012-11-19
收藏
得分:0 
不知道对不对~~
2012-11-19 19:06
huat107
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-11-18
收藏
得分:0 
是5135,
2012-11-19 19:10
愤怒的木瓜
Rank: 1
来 自:云南
等 级:新手上路
帖 子:12
专家分:8
注 册:2012-11-19
收藏
得分:0 
不会了~~找不到错~~求大神~~呜呜~~
2012-11-19 19:25
愤怒的木瓜
Rank: 1
来 自:云南
等 级:新手上路
帖 子:12
专家分:8
注 册:2012-11-19
收藏
得分:0 
不对~~~百度求证了~~500以内的素数和是4696~~~
2012-11-19 19:35
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:5 
试试这段代码
程序代码:
#include <stdio.h>

int main(int argc,char *argv[])
{
    int i,j,sum=0,count=0;
    for (i = 500;i>1;i--)
    {
        for(j= 2;j <= i/2;j++)
         {
            if (0==i%j) break;
            if(j==i/2)
            {
                count++;
                if(count>10)
                {
                    printf("%d个素数之和是%d\n",count-=1,sum);
                    goto _exit;
                }
                sum+=i;
                printf("倒数第%d个素数是%d\n",count,i);
               
            }
         }
     }
_exit:
     return 0;
} 


程序运行结果如下:
倒数第1个素数是499
倒数第2个素数是491
倒数第3个素数是487
倒数第4个素数是479
倒数第5个素数是467
倒数第6个素数是463
倒数第7个素数是461
倒数第8个素数是457
倒数第9个素数是449
倒数第10个素数是443
10个素数之和是4696


DO IT YOURSELF !
2012-11-19 19:43
cyhdahua
Rank: 7Rank: 7Rank: 7
来 自:山东
等 级:黑侠
威 望:2
帖 子:221
专家分:643
注 册:2012-6-15
收藏
得分:3 
程序代码:
#include<stdio.h>
#include<math.h>
int is_prime(int m){
    if(!m%2)return 0;
    for(int i=3;i</*=sqrt(*/m/*)*/;i+=2)
        if(m%i==0)
            return 0;
    return 1;
}
int main(){
    int count=0,sum=0;
    for(int i=500;count!=10;--i){
        is_prime(i)?sum+=i,count++:0;
    }
    printf("%d",sum);
    return 0;
}
我没用sqrt是因为sqrt在我这报重载不明确错误

WE GO
2012-11-19 19:46
huat107
Rank: 1
等 级:新手上路
帖 子:37
专家分:0
注 册:2012-11-18
收藏
得分:0 
嗯,的确膜拜大神们啊!
2012-11-19 20:52
愤怒的木瓜
Rank: 1
来 自:云南
等 级:新手上路
帖 子:12
专家分:8
注 册:2012-11-19
收藏
得分:0 
程序代码:
#include<stdio.h>

 #include<math.h>

 int main()

 {
      int m,k,i,n=0,sum=0;
      for(m=499;m>=1;m=m-2)
      {
          k=sqrt(m);
          for(i=2;i<=k;i++)
              if(m%i==0)
                  break;
          if(i>=k+1)
          {
              n++;
              sum+=m;
          }
          if(n==10)
          {
              printf("%d\n",sum);
              break;
          }
      }
      return 0;

理论上这个效率高~~~
2012-11-19 21:12
快速回复:小弟不才只写出了500以内的素数,500以内最大的10个素数和写不出来,求 ...
数据加载中...
 
   



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

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