史密斯數(史密夫數)

史密斯數

史密夫數一般指本詞條

美國有一位數字家名叫阿爾伯特·威蘭斯基,他姐夫史密斯非常喜歡研究數學,所以兩人經常在一起研討各種數學問題。有時,兩人碰不到一起,就習慣性地用電話交流。
一天,兩人剛結束電話交談,史密斯突然靈感來臨,對威蘭斯基的電話號碼“4937775”產生了興趣,總覺得這是個特別的數。可它的特殊之處究竟在哪兒呢?史密斯開始思索考證起來,他先把4937775分解質因數:4937775=3×5×5×65837,然後再把4937775所有質因數各位上的數字相加得:3+5+5+6+5+8+3+7=42,接著他又把4937775各位上的數字相加得:4+9+3+7+7+7+5=42
秘密終於找到了,原來這兩個和相等。這真有意思,難道是巧合么?有沒有其他的數也有此特點呢?史密斯不能解答這個問題。不過,他的這一發現引起了許多數學家的濃厚興趣。數學家們帶著這個疑問,紛紛對這一現象進行了研究。
結果發現,有許多數具有這樣獨特的性質,其中最小的數是4。大家不妨檢查一下,4=2×2,2+2=4。類似的有,22=2×11,2+2=2+1+1;27=3×3×3,2+7=3+3+3。隨著研究的不斷深入,他們發現,在0至10000之間,共有376個這樣的數;並且估計在0至100000之間有3300個這樣的數。因為這些有趣數的發現,追本溯源是史密斯的功勞,所以數學家們把這樣的數叫做“史密斯數”。
pascal解法:
var n,n1,n2,n3,i,a,b,s,s1,t:longint;
begin
write('n=');readln(n);
n3:=n;t:=0;
for n:=1 to n3 do begin
n1:=n;i:=2;s:=0;
while n1>=i do begin
while n1 mod i=0 do begin
b:=i;
while b>0 do begin
s:=s+b mod 10;
b:=b div 10;
end; {求質因數各位數字的和s}
n1:=n1 div i;
end;
i:=i+1;
end;
n2:=n;s1:=0;
repeat
a:=n2 mod 10;n2:=n2 div 10;
s1:=s1+a; {求此數各位數字的和s1}
until n2=0;
if (s=s1) and (i-1<>n) {排除素數} then begin
t:=t+1;writeln(n);
end;
end;
writeln(t);
readln;
end.

熱門詞條

聯絡我們