如果一個(gè)數(shù)字的各位數(shù)相加,得到一個(gè)新的數(shù)字的各位數(shù)繼續(xù)相加,最后得到一個(gè)一位數(shù)字。如果這個(gè)數(shù)字是1,那么原來(lái)這個(gè)數(shù)字被稱為一個(gè)幻數(shù)/魔數(shù),英文稱為magic numbers。
例如:1234=1+2+3+4=10; 1+0=1
1234是一個(gè)幻數(shù)。
現(xiàn)在,讓我們?cè)赑ython/ target=_blank class=infotextkey>Python中編寫(xiě)代碼來(lái)檢測(cè)幻數(shù),使用while循環(huán)來(lái)迭代并計(jì)算數(shù)字的總和,直到它變成一個(gè)個(gè)位數(shù)。
第4,5,6行:n==0表示第一輪求和完成,n=sum,sum=0將求和結(jié)果賦值給n,清空sum,繼續(xù)下一輪求和。
還有一種驗(yàn)證幻數(shù)的快捷方式。檢測(cè)一個(gè)數(shù)除以9的余數(shù)是否為1。如果余數(shù)是1,那么這個(gè)數(shù)字是一個(gè)幻數(shù)。如果一個(gè)數(shù)字的各位數(shù)之和能被9整除,則該數(shù)字可以被9整除。因此,如果一個(gè)數(shù)字的各位數(shù)之和被9除余數(shù)為1,則該數(shù)字可以被9除余數(shù)為1。
查找兩位數(shù)中的所有幻數(shù)
文中涉及代碼:
for i in range(10,100): if i%9==1: print(f"{i}是一個(gè)幻數(shù)!") num=int(input('請(qǐng)輸入一個(gè)數(shù)字:')) if num%9==1: print(f"{num}是一個(gè)幻數(shù)!") else: print(f"{num}不是一個(gè)幻數(shù)!") def Magic(n): sum=0 while n>0 or sum>9: if n==0: n=sum sum=0 sum = sum + n % 10 n = int(n / 10) return True if sum==1 else False num=int(input('請(qǐng)輸入一個(gè)數(shù)字:')) if Magic(num): print(f"{num}是一個(gè)幻數(shù)!") else: print(f"{num}不是一個(gè)幻數(shù)!")