用c语言编写涵数,求大于m的最小素数

如题所述

定义一个判断素数的函数FindPrimer直接找符合要求的素数。从键盘输入m,用m调用FindPrimer,函数中先将m增1以满足获得“大于m的素数”的要求,从m+1开始穷举判断,将第一个为素数的数返回,此返回值便是题解。代码如下:

#include "stdio.h"
int FindPrimer(int m){//判断素数
int i;
while(m++){
if(m>2 && !(m&1) || m<2)//小于2和大于2的偶数不是素数
continue;
for(i=3;i*i<=m;i+=2)//有大于1小于等于自身平方根的因子的数也非素数
if(!(m%i))
break;
if(i*i<=m)
continue;
break;
}
return m;//剩下的肯定是素数了
}
int main(int argc,char *argv[]){
int m;
printf("Input m(int m>0)...\nm=");
if(scanf("%d",&m)!=1 || m<1){//输入m需大于0
printf("Input error, exit...\n");
return 0;
}
printf("The smallest prime number of greater than %d is ",m);
printf("%d\n",FindPrimer(m));//调用自定义函数寻找大于m的第一个素数
return 0;
}

运行样例如下图:

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-04-01
运行效果:
Please input m:
34
大于m的最小素数是37

void main()
{
int m,n,i;
printf("Please input m:\n");
scanf("%d",&m);
if(m<2)
n=2;
else
{
for(;;)
{
for(i=2;i<m;i++)
{
if((m%i)==0)
break;
}
if(m==i)
{
n=m;
break;
}
m++;
}

}
printf("大于m的最小素数是%d",n);
getche();

}本回答被网友采纳