蓝桥杯 质数 C++算法提高 HERODING的蓝桥杯之路

资源限制
时间限制:1.0s 内存限制:256.0MB
问题描述
  给定一个正整数N,请你输出N以内(不包含N)的质数以及质数的个数。
输入格式
  输入一行,包含一个正整数N。
输出格式
  共两行。
  第1行包含若干个素数,每两个素数之间用一个空格隔开,素数从小到大输出。
  第2行包含一个整数,表示N以内质数的个数。
样例输入
10
样例输出
2 3 5 7
4
数据规模和约定
  N<=1000

解题思路:
不知道为何,最近碰到的质数题目特别多,感觉有必要弄一个小合集。。。
言归正传,这道题目其实比之前的质数题目还要简单,只要找到小于N的质数及个数即可,这里我还是用一个函数来实现,目的让代码更通俗易懂,其实唯一的难点就是在判断过程,可以从1遍历到该数的平方数(如果比平方数大那么遍历到平方数之前肯定就会有对应的数相乘得到该数,所以这种情况不可能出现),如果余数没有0的情况,那么就是质数。代码如下:

#include<bits/stdc++.h>

using namespace std;

int N;

bool judge(int n){
	for (int i = 2; i <= sqrt(n * 1.0); i ++){
		if (n % i == 0){
			return false;
		}
	}
	return true;
}

int main(){
	cin >> N;
	int count = 0;
	for(int i = 2; i < N; i ++){
		if(judge(i) == true){
			cout << i << " ";
			count ++;
		}
	}
	cout << endl << count;
	return 0;
} 

猜你喜欢

转载自blog.csdn.net/HERODING23/article/details/106752645
今日推荐