西工大2019年计算机机试第四题:找素数(递归法)

问题:从M开始找到第n个质数;例如输入: 4 3输出:5 7 11分析:问题的关键在于素数的判断。想法:先定义一个函数判断一个数是否为素数,通过for循环判断(只能被1和本身整除的数);再构造一个递归函数,功能是找出从m开始(包含m)n个素数。递归函数中调用判定素数函数,弱一个数是素数的话,输出到控制台上,同时素数数量减1,本身加1,接着往下找。代码:#include<...
摘要由CSDN通过智能技术生成

问题:

从M开始找到第n个质数;

例如输入: 4 3

输出:5 7 11

分析:

问题的关键在于素数的判断。

想法:先定义一个函数判断一个数是否为素数,通过for循环判断(只能被1和本身整除的数);再构造一个递归函数,功能是找出从m开始(包含m)的n个素数。递归函数中调用判定素数函数,若一个数是素数的话,输出到控制台上,同时素数数量减1,本身加1,接着往下找。

代码:

#include<iostream>
using namespace std;
bool flag = true;          //初始化为true
bool judge(int m)          //布尔类型,判定是否是素数,素数为true,非素数为false
{
	if (m <= 1)            //最小素数为2,
		flag = false; 
	else if (m == 2)       
		flag = true;
	else if (m > 2)       //素数定义来判断是否为素数
	{
		for (int i = 2; i < m; i++)//循环判断是否为素数
		{
			if (m % i == 0)
			{
				flag = false;
				break;               //非素数直接退出本层循环,不再进行以后的判断
			}
			else
				flag = true;  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值