我的任務有問題。任務是:
我們說數字 1 是一個超級數字。如果數字 x 是超,那么數字 2x 和 3x 也是超。例如,由于數字 1 是超級,那么數字 2 和 3 是超級。由于 2 和 3 是超級,那么數字 4、6 和 9 是超級,依此類推。同時,數字 10 和 7 也不是超級。撰寫一個程式,要求用戶輸入一個自然數 n。程式列印輸入的數字是否為超級。
這就是我到目前為止所做的
num = int(input("Enter a natural number "))
if num <= 0:
print("That is not a natural number")
else:
if num % 5 == 0 or num % 7 == 0 or num % 11 == 0 or num % 13 == 0:
print("Number is not super.")
elif num == 1 or num % 2 == 0 or num % 3 == 0 or num % 8 == 0 or num % 9 == 0:
print("Number is super")
else:
print("Number is not super.")

問題是對于像 62 這樣的一些數字,它說它是一個超級數字,但它不是..
uj5u.com熱心網友回復:
在我看來,您似乎在沒有先弄清楚如何手動解決的情況下就跳了進去。
就個人而言,我認為開始這個最簡單的方法是遞回,盡管它對于大數字會非常低效,所以如果你想在完成第一個版本后去優化它,這取決于你。我讓它很容易作業,但由于這是一個你需要解決的問題,我不會只是復制和粘貼答案。
它的作業原理是這樣的(偽代碼):
def is_super(i):
if i is below 1: not a super
if i is 1: is a super
if i is above 1: check if i/2 or i/3 is a super
uj5u.com熱心網友回復:
只需遵循超級數的定義:
def is_super(k):
if k == 1: return True
if k % 2 == 0:
return is_super(k / 2)
if k % 3 == 0:
return is_super(k / 3)
return False
一些測驗
print(is_super(9))
True
print(is_super(14))
False
print(is_super(32))
True
print(is_super(62))
False
uj5u.com熱心網友回復:
num = int(input("Enter a natural number "))
if num <= 0:
print("That is not a natural number")
else:
if num % 3 == 0:
while num % 3 == 0:
num = num / 3
print(num)
if num == 1 or num % 2 == 0 or num % 3 == 0:
print("Number is super")
else:
print("Number is not super")
elif num % 2 == 0:
while num % 2 == 0:
num = num / 2
print(num)
if num == 1 or num % 2 == 0 or num % 3 == 0:
print("Number is super")
else:
print("Number is not super")
else:
print("Number is not super")
這是我到目前為止所做的,但我認為它不適用于大數字?
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/346027.html
上一篇:Laravel將資料從視圖發送到JavaScript檔案
下一篇:比較各組之間的年費率
