我想要一個函式來確定從a到b (包括)的連續正整數范圍內的每個整數n是否可以寫成兩個與 n 互質的正復合整數之和。
函式輸入和輸出應為以下形式:
- function(a,b) = FALSE,未通過測驗的范圍內的最大整數是c
- function(a,b) = TRUE,范圍內的所有整數都通過了測驗
輸入:
對于輸入,用戶只需鍵入兩個整數,其中 1 ≤ a < b。
- 如果用戶輸入了一個無效的整數,應該會出現類似“invalid selection of integers”這樣的錯誤資訊。
- 如果輸入至少有一個缺失值,則必須發生類似的事情。
輸出:
如果至少有一個整數n (在a到b的范圍內)不能寫成兩個與n互質的(正)復合整數之和,則函式的輸出應以布林值 FALSE 開頭。
然后該函式應輸出未通過測驗的最大整數。完整的輸出應使用上面的格式 (1) 在控制臺中列印:布林值 FALSE 字串(如圖所示) 未通過測驗的最高整數。
另一方面,如果從a到b的整數范圍內的每個整數n都可以寫為與n互質的兩個(正)復合整數之和,則函式的輸出應以布林值 TRUE 開始。完整的輸出應使用上面的格式 (2) 在控制臺中列印:布林值 TRUE 字串(如圖所示)。
例子:
考慮整數范圍 (90,100) - 即從 90 到 100 的整數。
100 = 49 51(復合且與 100 互質)
99 = 49 50(復合且與 99 互質)
98 = 33 65(復合且與 98 互質)
97 = 49 48(復合且與 97 互質)
96不能寫成兩個互質合數之和
95 = 49 46(復合且與 95 互質)
94 = 49 45(復合且與 94 互質)
93 = 49 44(復合且與 93 互質)
92 = 35 57(復合且與 92 互質)
91 = 45 46(合數且與 91 互質)
90 不能寫成兩個互質合數之和
因此
function(90,100) = FALSE,未通過測驗的范圍內的最大整數為96
范圍內至少有一個整數未通過測驗,因此函式開始回傳 FALSE。即使 90 和 96 均未通過測驗,但輸出中僅顯示 96,因為它具有最高值。
function(91,95) = TRUE,范圍內的所有整數都通過了測驗
由于每個整數都通過了 (91,95) 范圍內的測驗,因此函式首先回傳 TRUE。
額外資訊: 我非常確定該演算法將涉及某種 For/While 回圈,可能包含一些嵌套的 IF 陳述句。但正如我在下面的評論中所說,我只是不確定如何將它們拼湊在一起以實作我的目標。
uj5u.com熱心網友回復:
實際上你的數字序列不能寫成2個復合和相對素數的總和是有限的-> http://oeis.org/A096076 而且也很小
所以最好的解決方案只是檢查間隔是否包含其中之一,如果它確實采用最小的一個并回傳它
有關更多詳細資訊和資訊,我發現了一些關于它的內容: https ://mathoverflow.net/questions/354215/not-the-sum-of-two-relatively-prime-composite-numbers https://math。 stackexchange.com/questions/1455165/numbers-as-sum-of-two-relatively-prime-composite-numbers
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/510089.html
上一篇:在IRIS資料集上使用卷積
下一篇:在C中的二維陣列中搜索字母
