要求:
1)n最大不超过100000.
2)当n内素数不足k个时,先输出Only xx:(xx是十进制整数),再另行输出素数。
代码文本:
#include "stdio.h"
int prime(int n){//素数
int i;
if(n>2 && !(n&1) || n<2)
return 0;
for(i=3;i*i<=n;i+=2)
if(!(n%i))
return 0;
return 1;
}
int main(int argc,char *argv[]){
int n,k,t;
printf("Enter n & k(int 0<n<100000,k>0)...\n");
if(scanf("%d%d",&n,&k)==2 && 0<n && n<100000 && k>0){
for(n-=!(n&1),t=0;t<k && n>1;n -= n>3 ? 2 : 1)
if(prime(n))
t++;
printf(t<k ? "\nOnly %d:\n" : "\n%d prime number(s) is:\n",t);
for(k=0,n += n>2 ? 2 : 1;t;n += n>2 ? 2 : 1)
if(prime(n)){
printf(++k%10 ? "%6d" : "%6d\n",n);
t--;
}
if(k%10)
putchar('\n');
}
else
printf("Input error, exit...\n");
return 0;
}