素數環問題

2021-04-12 14:02:39 字數 699 閱讀 7809

/* 問題描述:用自然數1到20構成乙個素數環,環中的每個元素與其相鄰元素的和都構成素數。請程式設計實現並輸出這個環

這裡採用了遞迴策略,可以輸出所有情況,不過存在重複輸出問題,重複輸出數為n,(環是沒有次序的)現在沒有想到好的解決方法。若自然數個數確定為20;則構環的數目相當大,程式執行時間也高得驚人。測試時可以減少自然數。**如下:

版本:1.0

#include

#include

using

namespace std;

#define n 20

bool selected[n+1];//記錄自然數是否已加入到此環中

int ring[n]=;//環

bool prime[40];//素數標記陣列(自然數1-40間哪些些是素數)

long

int count=0;//總的素數環構數

int main()

void init()

prime[i]=temp;//標記素數

}for(i=0;iselected[i+1]=false;

}//初始化數字

void rings(int n)

else

return ;

}else

}else

if(n==0)

}}//end_for 

}//end_else

}

素數環問題

素數環 時間限制 1000 ms 記憶體限制 65535 kb 難度 2 描述 有乙個整數n,把從1到n的數字無重複的排列成環,且使每相鄰兩個數 包括首尾 的和都為素數,稱為素數環。為了簡便起見,我們規定每個素數環都從1開始。例如,下圖就是6的乙個素數環。輸入 有多組測試資料,每組輸入乙個n 0 n...

素數環問題

把從1到20這20個數擺成乙個環,要求相鄰的兩個數的和是乙個素數。c include include include using namespace std 列印結果 void printsolution const vector v cout bool check1 const vector v,...

素數環問題

時限 1000ms 記憶體限制 10000k 總時限 3000ms 描述把1到20這重新排列,使得排列後的序列a滿足 a.任意相鄰兩個數之和是素數 b.不存在滿足條件a的序列b使得 a和b的前k 0 k 19 項相同且b的第k 1項比a的第k 1項小。輸入沒有輸入。輸出 輸出a,兩個數字之間用乙個空...