大侠们帮忙该一下错!!!!谢谢
下面的程序用筛选法求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);
}