函数原型为:int fun(int n);根据下面的说明,编写该函数。
(1)函数功能:求最小素数。
(2)入口参数:函数形参n>=2。
(3)出口值: 函数返回值是比n大的最小素数。
一个实现,供参考:
#include <stdio.h>
#include <math.h>
int fun(int n){
if(n<2){ //如果n比2小,则输出-1,标识参数不合格
return -1;
}
int i,k;
int find=0; //寻找标志,0未没有找到比n大的最小素数,1为找到了
int prime=1; //素数标志,0为非素数,1为素数
while(find==0){ //如果没有找到,就一直执行查找操作
for(i=n+1;;i++){ //从比n大1的数开始查找,直到直到找到
for(k=2;k<=(int)sqrt(i);k++){ //判断当前i是否为素数
if(i%k==0){ //如果不是素数,把素数标志置0,表示不是素数,然后break跳出循环开始下一个数的判断
prime=0;
break;
}
}
if(prime==1){ //如果判断完,是素数,则返回这个i的值,他就是比n大的最小素数
return i;
}else{ //如果不是素数,则把素数标志重新置1,表示默认是素数,直到下次循环里判断出他不是素数
prime=1;
continue; //开始一个数的判断
}
}
}
}
int main(void){
int n;
printf("请输入一个整数,程序将求比它大的最小素数:");
scanf("%d",&n);
int result = fun(n);
if(result!=-1){
printf("比%d大的最小素数是:%d.\n",n,result);
}else{
printf("请输入一个大于等于2的数。\n");
}
return 0;
}