大于m的素数判断的问题
各位同仁,空闲之际,我自己编写了如下一段小程序。我的意图是:打印出大于m的k个素数。
我的算法是:先输入整数m和k,并判断是否正数,然后从m+1开始判断某个数是否素数,如果是,则将其保存到数组a[]并打印。
我是在VC++里运行的,运行结果如附图1:后来增大个数k的值,输出结果也是错误的,意思是所有大于m的奇数都会被打印出来。请问各位问题出在哪里?请指教一二,鄙人谢过!
程序源代码如下:
#include "stdio.h"
#include "math.h"
int sushu(int n)
{
int i,k,flag=1;
k=(int)sqrt(n);
for(i=2;i<=k;i++)
if(n%i==0){break;flag=0}
else flag=1; (把这句话注释了以后还是一样的效果!)
return(flag);
}
void main()
{
int i,j=0,k,s=0,m,n,a[1000];
printf("请输入范围数最小值m:\n");
scanf("%d",&m);
//printf("%d",m);
if(m<=0)printf("此范围无意义!\n");
else
{
printf("请输入素数个数k:\n");
scanf("%d",&k);
if(k<=0)printf("个数格式出错,请重新输入!\n");
else
{
if(m%2==0)n=m+1;else n=m+2;
for(i=n;i<10000;i+=2)
if(sushu(i)){++s;a[s-1]=i;if(s==k)break;}
for(i=0;i<k;i++)
{++j;printf("%5d",a[i]);
if(j%6==0)printf("\n");
}
}
}
}