C语言:定义函数判断素数;从键盘输入n(<100000)和k,不用数组,由小到大屏显n内最大的k个素数。咋编?

要求:
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;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2020-07-08

第2个回答  2020-07-09
一个个判断过去,每个数是或者不是素数
如果是素数马上输出就好
判断素数的函数随便搜一下,网上很多的