特殊質數js實現

2021-07-12 05:32:23 字數 1944 閱讀 9575

首先我們看一下原題

7331是乙個特殊的質數,因為我們去掉個位得到的733是乙個質數;再次去掉個位得到的73又是乙個質數;再去掉個位後得到的7依然是乙個質數。對於形似這種的質數,我們稱呼它為特殊質數。寫乙個程式對給定的待求特殊質數的位數 n (1≤n≤8)求出所有對應位數的特殊質數(注意:數字1不被看作乙個質數)。

輸入包括乙個整數,為待求特殊質數的位數 n。

輸出長度為n的特殊質數列表,每行乙個。

看到這道題我們首先分析一下什麼是質素。質數就是只能被一和自身整除的數,題目要求去掉各位之後仍然是是質數,所以最高位必須是質數,所以我們定義乙個最高位滿足條件的質數陣列 var tiptop=[2,3,5,7];除了最高位後面的數那肯定是以奇數結尾的,但是以5結尾的數是能被5整除的,所以定義後面位數出現的數的陣列為 var afternum=[1,3,7,9] 。

首先我們寫乙個方法判斷這個數是否是質數。**如下

/**

* 判斷數是否是質素

*@param

data

輸入的數

*@returns

輸出是否是質素

*/functionjudgezhisu(data)

if(data <= 0)

if(data == 1)

if(!(/^[0-9]*[1-9][0-9]*$/.test(data.tostring())))

varlen = math.floor(data / 2);

for(vari = 2

; i <= len; i++)

}return true;

}

接著我們就要開始計算資料是否滿足題目的條件,其中我們會在方法的內部定義乙個遞迴方法

/**

* 輸入位數,輸出滿足條件的所有特殊質素

*@param

len

位數長度

1<=len<=8

*/functioncomputemain(len)

if(len < 1 || len > 8)

if(!(/^[0-9]*[1-9][0-9]*$/.test(len.tostring())))

vardataarr = ;

vartiptop = [2, 3

, 5, 7];

varafternum = [1, 3

, 7, 9];

for(vari = 0

, arrlen = tiptop.length

; i < arrlen; i++)

/*** 遞迴計算

*@param

num

前幾位滿足條件的資料

*@param

leve

已經多少位了

*/functionrecurrence(num, leve)

for(vari= 0

,alen=afternum.length

;i;i++)}}

returndataarr;

}

計蒜客 特殊質數

7331是乙個特殊的質數,因為我們去掉個位得到的733是乙個質數 再次去掉個位得到的73又是乙個質數 再去掉個位後得到的7依然是乙個質數。對於形似這種的質數,我們稱呼它為特殊質數。寫乙個程式對給定的待求特殊質數的位數 n 1 n 8 求出所有對應位數的特殊質數 注意 數字1不被看作乙個質數 輸入包括...

DFS 特殊的質數肋骨

時間限制 1000ms 記憶體限制 256000kb 題目描述 農民約翰母牛總是產生最好的肋骨。你能通過農民約翰和美國農業部標記在每根肋骨上的數字認出它們。農民約翰確定他賣給買方的是真正的質數肋骨,是因為從右邊開始切下肋骨,每次還剩下的肋骨上的數字都組成乙個質數,舉例來說 7 3 3 1 全部肋骨上...

特殊的質數肋骨 DFS

農民約翰母牛總是產生最好的肋骨。你能通過農民約翰和美國農業部標記在每根肋骨上的數字認出它們。農民約翰確定他賣給買方的是真正的質數肋骨,是因為從右邊開始切下肋骨,每次還剩下的肋骨上的數字都組成乙個質數,舉例來說 7 3 3 1 全部肋骨上的數字 7331是質數 三根肋骨 733是質數 二根肋骨 73 ...