7.1用筛法求100以内的素数。
输入一个数,判断是否是素数。
#include<stdio.h>//输入一个数,判断是否是素数。
int main()
{
int num,i,PanDuan=0;
printf("请输入一个大于1的数:");
scanf("%d",&num);
fflush(stdin);
printf("您输入的是:%d\n\n",num);
for(i=2;i<num;i++)
{
PanDuan=0;
if(num%i==0){PanDuan=1;}
if(PanDuan==1){break;}
}
if(PanDuan==0)printf("%d是素数。\n",num);
else printf("%d不是素数。\n",num);
return 0;
}
可以改进为:求100以内所有素数:
#include<stdio.h>//打印100以内所有素数。
int main()
{
int i,j,PanDuan;
for(i=3;i<=100;i++)
{
for(j=2;j<i;j++)
{
PanDuan=0;
if(i%j==0){PanDuan=1;}
if(PanDuan==1){break;}
}
if(PanDuan==0)printf("%d是素数。\n",i);
}
return 0;
}
缺陷是1和2没有打印出来。
仿照着书上的例子改的:
#include<stdio.h>//使用数组输出1~100所有的素数
int main()
{
int i,j,a[101];
for(i=1;i<=100;i++)//对数组赋值
{
a[i]=i;
}
for(i=3;i<=100;i++)//判断部分
{
for(j=2;j<i;j++)
{
if(a[i]%j==0){a[i]=0;break;}
}
}
j=0;
for(i=1;i<=100;i++)
{
if(a[i]!=0)
{
printf("%4d",a[i]);
j++;
if(j%10==0)
{
printf("\n",j);
}
}
}
return 0;
}