| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 614 人关注过本帖
标题:求助:哪一个是正确答案!!!!!!!!!!!!!!!!!!!!!!!
只看楼主 加入收藏
cbullet
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-3-13
收藏
 问题点数:0 回复次数:7 
求助:哪一个是正确答案!!!!!!!!!!!!!!!!!!!!!!!
下列程序的功能是:计算500~800之间素数的个数cnt,并按所求素数的值从小到大的顺序,再计算其间隔加、减之和,即第1个素数-第2个素数+第3个素数-第4个素数+第5个素数……的值sum。请编写函数countValue()实现程序的要求,最后调用函数writeDat()把结果cnt和sum输出到文件OUT66.DAT中。
#include<stdio.h>
int cnt,sum;

void countValue()
{
int i,j,half,yy[100];
 for(i=500;i<800;i++)
    {
     half=i/2;
     for(j=2;j<=half;j++)
         if(i%j==0) break; /*如果该数不是素数,则退出此层循环*/
         if(j>=half)     /*如果该数是素数,则将该数存入数组yy中*/
           {
            yy[cnt]=i;
            cnt++;        /*统计素数的个数*/
           }
    }
for(i=0,j=-1;i<cnt;i++)      /*计算这些素数的间隔加、减之和*/
    {
     j=j*-1;
     sum+=j*yy[i];
    }
}

void main()
{
 cnt=sum=0;
 countValue();
 printf("素数的个数=%d\n",cnt);
 printf("按要求计算得值=%d\n",sum );
 writeDAT();
}
writeDAT()
{
 FILE *fp;
 fp=fopen("OUT66.DAT","w");
 fprintf(fp,"%d\n%d\n",cnt,sum);
 fclose(fp);
}
答案2:void countValue()
{
int i,j,k=1;
for(i=800;i>=500;i--)
{for(j=2;j<i;j++)
if(i%j==0) break;
if(j>=i)
{cnt++;
sum+=k*i;
k=-1*k;
}
}
}


[[it] 本帖最后由 cbullet 于 2008-4-9 18:52 编辑 [/it]]
搜索更多相关主题的帖子: 素数 cnt sum half countValue 
2008-04-09 17:04
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
搞笑,有低级错误的代码,没有可比性

" border="0" />
2008-04-09 17:13
cbullet
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-3-13
收藏
得分:0 
第一个对的吗?
2008-04-09 17:14
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
for(j=2;j<=half;j++)
         if(i%j==0) break;
看清楚+想清楚

" border="0" />
2008-04-09 17:17
cbullet
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-3-13
收藏
得分:0 
我刚学C不久,深入的知识我不懂,后天就要考试了,我只想知道哪一个是正确的==!,我知道临时抱佛脚很不行,没时间了
2008-04-09 17:52
now
Rank: 1
来 自:广州
等 级:新手上路
帖 子:544
专家分:0
注 册:2007-11-9
收藏
得分:0 
half=i/2;
j<=half;???

GIS
Geographic Information System
你在哪里?——》你的坐标?
2008-04-09 18:05
雨中飞燕
Rank: 3Rank: 3
等 级:禁止访问
威 望:8
帖 子:2200
专家分:0
注 册:2007-8-9
收藏
得分:0 
哈哈,for循环估计你自己写也写不出吧
for(j=2;j<=half;j++)
         if(i%j==0) break;
         if(j>=half)
把这三行,联系在一起去看

" border="0" />[color=white]

[[it] 本帖最后由 雨中飞燕 于 2008-4-9 18:13 编辑 [/it]]
2008-04-09 18:09
cbullet
Rank: 1
等 级:新手上路
帖 子:66
专家分:0
注 册:2008-3-13
收藏
得分:0 
我用的是第2種方法,但是答案却是前者,我搞暈了。。。。我只想知道哪一個才是正確的= =?拜託了
2008-04-09 18:13
快速回复:求助:哪一个是正确答案!!!!!!!!!!!!!!!!!!!!!!!
数据加载中...
 
   



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

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