1. 程式人生 > >找質數|計蒜客2019藍橋杯省賽 B 組模擬賽(一)

找質數|計蒜客2019藍橋杯省賽 B 組模擬賽(一)

tdi -- com pre 省賽 cin sca %d pri

找質數

技術分享圖片
技術分享圖片

思路:數據大,用線性篩,篩選素數表,最後查表:題目讓我們查找相加等於n的兩個數,那麽我們就枚舉1個素數a,在素數表中查找是否存在n-a也是素數。

註意事項:數據大,不宜用輸入輸出流,cout、cin、endl這些改成printf scanf

代碼:

#include<cstdio>

int t;
int n;
int prime[1000010];

//篩選素數 打表 
void Prime(){
    for (int i = 2; i <= 1000000; i++) {
        prime[i] = true;
    }
    for (int i = 1; i * i <= 1000000; i++) {
        if (prime[i]) {
            for (int j = i * i; j <= 1000000; j += i) {
                prime[j] = false;
            }
        }
    }
}


int main(){
    scanf("%d",&t);
    
    
    Prime();
    //輸入數據 查表 
    while(t--){
        scanf("%d",&n);
        for(int i=2;i<=n;i++){
            if(prime[i] && prime[n-i]){
                printf("%d %d\n",i,n-i);
                break;
            }
        }
    }
    return 0;
} 

找質數|計蒜客2019藍橋杯省賽 B 組模擬賽(一)