本题要求实现一个函数:找出大于num的最小素数,并将其作为函数值返回。
函数接口定义:
int Prime_number ( int N );
其中 N
是用户传入的参数。 N
的值不超过int
的范围,函数须返回 找到的满足条件的数。
裁判测试程序样例:
#include<stdio.h>
int Prime_number ( int N );
int main()
{
int num;
scanf("%d",&num);
printf("%d\n",Prime_number(num));
return 0;
}
/* 请在这里填写答案 */
输入样例:
10
输出样例:
11
输入样例:
25
输出样例:
29
想法:首先是所求的个数只要一个,其次是边界值
int Prime_number ( int N )
{
int i,j,k,count=0;
if(N<=1)
{
return 2;
}
else
{
for(i=N;;i++)//某种意义上说我们求的数是没有上界的,完全取决于什么时候出现
{
for(j=2;j<=i;j++)
{
if(i%j==0)
{
break;//如果这个数被提前整除了,就结束换下一个数
}
}
if(i==j&&i!=N)//要找的素数必须>起始值
{
k=i;
count++;
}
if(count==1)//一旦找到一个符合要求的数,count就会由0变1,以此结束这个最大的循环
break;
}
return k;//最后输出的k即为所求
}
}
提炼:此题区别于之前的求一个区间内的所有素数之和,那里用了两个函数先拿一个定义素数怎么判断,再拿一个函数解决区间内符合要求的数做累加;这里只用了一个函数,并且题目只求一个最小素数,因此一些循环步骤可能要加break来及时结束循环。