找質數|計蒜客2019藍橋杯省賽 B 組模擬賽(一)
阿新 • • 發佈:2019-02-01
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 組模擬賽(一)