6-10 找出大于num的最小素数 (10 分)

本题要求实现一个函数:找出大于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来及时结束循环。 

 

  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值