1. 程式人生 > >孿生素數

孿生素數

一個 play == log cin else i++ pan 童鞋

描述
寫一個程序,找出給出素數範圍內的所有孿生素數的組數。一般來說,孿生素數就是指兩個素數距離為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++; } }

技術分享

孿生素數