| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 387 人关注过本帖
标题:大侠们帮忙该一下错!!!!谢谢
只看楼主 加入收藏
gudong091
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-4-7
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:6 
大侠们帮忙该一下错!!!!谢谢
下面的程序用筛选法求1~100以内的素数。所谓筛选,可以这么理解,将所有的数排成一排,然后从2开始,将2的所有的倍数都划去,那么剩下的数就没有2的倍数了。然后在剩下的数中第1个数3的所有的倍数划去,那么剩下的数中既没有2的倍数,也没有3的倍数了。这样依次类推,在某次扫描中,在剩下的数列中设第一个为n,那么这个n一定不是比n小的任意一个素数的倍数,那么这个n一定就是素数。程序使用一个具有100个素数的数组,规定用1表示这个数没有被划去,用0表示这个被划去了。程序首先给这个100个元素初始化,然后使用筛选法生成素数元素,最后将这些素数输出。注意到如果定义数组下标为100,那么最大可用元素只有c[99],所以这里定义到101
#include<stdio.h>
void main()
{
int a,b,c[101];
c=0,0,1;
for(a=2;a<100;a++)
if(c[a]!=0)
for(b=1;b<101;b++)
if(b%a==0)
c[b]=0;
for(a=1;a<101;a++)
if(c[a]!=0)
printf("%d\t",c[a]);
}
下列给定程序中,函数fun的功能是:为一个偶数寻找两个素数,这两个素数之和等于该偶数。要求:不得增行或删行,也不得更改程序结构。
#include<stdio.h>
#include<math.h>
void fun(int a)
{
int i,j,d,y;
for(i=3;i<=a/2;i=i+2)
{y=0;
for(j=1;j<=sqrt((double)i);j++)
if(i%j==0) y=0;
if(y==1)
{ d=i-a;
for(j=1;j<=sqrt((double)d);j++)
if(d%j==0) y=0;
if(y==1)
printf("%d=%d+%d\n",a,i,d);
}
}
}
void main()
{
int n;
do{
printf("\n input n:");
scanf("%d",&n);
}while(n%2==0);
fun(n);
}
搜索更多相关主题的帖子: 元素 
2010-04-12 22:21
一口三个汉堡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:155
专家分:525
注 册:2010-3-21
收藏
得分:20 
素数的那题
#include<stdio.h>
void main()
{
int a,b,c[101];
c[1]=1;
for(a=2;a<10;a++)//除数,从2到9
   {
      for(b=2;b<100;b++)
      if(c[b]!=0||b==2||b==3||b==7||b==5)//去除个位的中的3,5,7.应该有更简单的方法。连这步也省掉
      if(b%a==0)
       c[b]=0;
      else c[b]=b;
      }
for(a=1;a<100;a++)
{
if(c[a]!=0)
printf("%d\t",c[a]);
}
printf("\n");
}
#include<stdio.h>
#include<math.h>
void fun(int a)
{
    int i,j,d,y;
    for(i=1;i<=a/2;i=i+2)//把i=3改为1
    {
        y=1;
        for(j=2;j<=sqrt(i);j++)//把j=1改为2,才能判断是否为素数
        if(i%j==0) y=0;
        if(y==1)
        {
          d=a-i;//把d=i-a,改为a-i;a永远比i大。。
          for(j=2;j<=sqrt(d);j++)//同上
          if(d%j==0) y=0;
          if(y==1)
          printf("%d=%d+%d\n",a,i,d);
        }
    }
}
void main()
{
  int n;
  do{
     printf("\n input n:");
     scanf("%d",&n);
  }while(n%2!=0);//把等号换成不等
fun(n);
}


[ 本帖最后由 一口三个汉堡 于 2010-4-13 18:46 编辑 ]

坚持做对的事情,而不是容易的事情。
2010-04-12 23:39
gudong091
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-4-7
收藏
得分:0 
回复 2楼 一口三个汉堡
大侠啊!
那里面有个a<6是什么意思啊???
2010-04-13 11:24
一口三个汉堡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:155
专家分:525
注 册:2010-3-21
收藏
得分:0 
我把答案改了,连第二题也弄好了

坚持做对的事情,而不是容易的事情。
2010-04-13 12:07
gudong091
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-4-7
收藏
得分:0 
回复 4楼 一口三个汉堡
恩,辛苦了啊!!
虽然还是不是很懂!
但是答案确实是对的,
恩,
谢啦哈!!!
2010-04-13 17:31
gudong091
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2010-4-7
收藏
得分:0 
回复 4楼 一口三个汉堡
不对啊!
刚才又仔细看了一下
好像还少了几个数啊
2啊,7啊的都没有啊!
2010-04-13 18:17
一口三个汉堡
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:3
帖 子:155
专家分:525
注 册:2010-3-21
收藏
得分:0 
我又改了。。。。。

坚持做对的事情,而不是容易的事情。
2010-04-13 18:46
快速回复:大侠们帮忙该一下错!!!!谢谢
数据加载中...
 
   



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

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