描述寫一個程式,找出給出素數範圍內的所有孿生素數的組數。一般來說,孿生素數就是指兩個素數距離為2,近的不能再近的相鄰素數。有些童鞋一看到題就開始寫程式,不仔細看題,咱們為了遏制一下讀題不認真仔細的童鞋,規定,兩個素數相鄰為1的也成為孿生素數。輸入第一行給出N(0 using namespace st... ...
- 描述
- 寫一個程式,找出給出素數範圍內的所有孿生素數的組數。一般來說,孿生素數就是指兩個素數距離為2,近的不能再近的相鄰素數。有些童鞋一看到題就開始寫程式,不仔細看題,咱們為了遏制一下讀題不認真仔細的童鞋,規定,兩個素數相鄰為1的也成為孿生素數。
- 輸入
- 第一行給出N(0<N<100)表示測試數據組數。
接下來組測試數據給出m,表示找出m之前的所有孿生素數。
(0<m<1000000) - 輸出
- 每組測試數據輸出占一行,該行為m範圍內所有孿生素數組數。
#include<iostream>
using namespace std; int main () { int n; cin>>n; int a[n];//n組數 int i; for(i = 0; i < n; i++) cin>>a[i];//輸入每一組數的數字 int k = 0, flag = 1; int sum = 0; int q = 0; while(k < n)//迴圈每一組數 輸出此組數的孿生素數組數 { int j = a[k];//1~a[k] int b[j]; int m; if(j == 2)//2為素數 b[q++] = j; else if(j > 2)//計算每一組數的素數存入b數組中 { for(m = 2; m <= j; m++) { i = 2; while(i <= (m+1)/2) { if(m % i == 0) { flag = 0; break; } i++; } if(flag) b[q++] = m; flag = 1; } } for(i = 0; i < q-1; i++)//計算每一組素數的孿生素數組數 if(b[i+1] - b[i] == 2 || b[i+1] - b[i] == 1) sum++; cout<<sum<<endl;//輸出素數組數 sum = 0;//重置 q = 0; k++; } }