藍橋杯 質數 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;
} 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章