PTA 1013 數素數 (20 分)【素數判定】

1013 數素數 (20 分)

令 P​i​​ 表示第 i 個素數。現任給兩個正整數 M≤N≤10​4​​,請輸出 P​M​​ 到 P​N​​ 的所有素數。

輸入格式:

輸入在一行中給出 M 和 N,其間以空格分隔。

輸出格式:

輸出從 P​M​​ 到 P​N​​ 的所有素數,每 10 個數字佔 1 行,其間以空格分隔,但行末不得有多餘空格。

輸入樣例:

5 27

輸出樣例:

11 13 17 19 23 29 31 37 41 43
47 53 59 61 67 71 73 79 83 89
97 101 103

題記:

讀完題我就先找了一個素數判定的函數代碼粘貼上了,然後在想怎麼做。

我的方法是,從2開始往後找,用count記錄是第幾個素數,輸出第m-n個素數,第n個時查找結束。

注意輸出格式的控制。

C++程序如下:

#include <iostream>
#include <cmath>
using namespace std;

bool isprime(int n){
	if(n == 2){
		return 1;
	}else{
		if(n % 2 == 0){
        	return 0;  
    	} 
        int end = sqrt(n), i;  
        for(int j=3; j<=end; j+=2) {  
            if(n % j == 0){
            	return 0;
    		}     
        }  
        return 1;  
	}
}  //判斷素數函數

int main(void){
	int m, n, count=0;
	cin >> m >> n;
	for(int i=2; ;i++){
		if(isprime(i)){
			count++;
			if(count>=m && count <n){
				if((count+1-m)%10 == 0){
					cout << i << endl;
				}else{
					cout << i << " ";
				}
			}else if(count == n){
				cout << i;
				break;
			}
		}
	}
    return 0;
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章