输入一个正整数N,然后输出前N个质数

最近找工作遇到很多手撕代码题,虽然很多题都有思路,但是短时间内手撕出来,且细节都到位,没有那么容易,本人小白一个,把遇到的问题及思路和解决方法写一下,供大家参考!

#include<iostream>
using namespace std;

int check(int n)
{
	for (int j = 2; j < n; j++)//从2开始判断,范围为2~n-1
	{
		if (n%j == 0)
			return 0;//2~n-1范围内,只要有一个能整除n,表示除了1和n本身之外还有因子,
                     //此时不是质数,直接返回0
	}
	return 1;//若2~n-1都不能整除n,表示n只能被1和自身整除,为质数,返回1
}
int main()
{
	int N=0, count = 0;
	cin >> N;
	for (int i = 2;; i++)//注意从2开始判断,1不是质数也不是合数
	{
		if (check(i))//把下面的count判断放在if里面
		{
			count++;   //先判断是不是质数,若是,计数+1
			if (count > N)  //每次计数+1后记得判断count是否达到预期值N
				break;
			else
				cout << i << " ";
		}	
	}
	cout << endl;
	return 0;
}

注意点:

1、待判断的数从2开始,判断是否为质数时也要从2开始判断

2、每次判断完一个数,要在if语句里面判断count的值是否达到上限N

3、关于优化问题,可以先把10以内的数倍数剔除(把2~10的倍数先剔除,然后从剩下的数中再判断)

水平有限,仅仅是一个小总结。

 

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值