-
同構數
鎖定
正整數 n 若是它的平方數的尾部,則稱 n 為同構數。
例如:5的平方數是25,而且 25 的尾部是 5 ,所以 5 就是一個同構數。
- 中文名
- 同構數
- 例 子
- 1,5,6,25,76,376
- 討論範圍
- 正整數集
- 學 科
- 數學,計算機
同構數基本概念
同構數是會出現在它的平方數的尾部的正整數。
例如:5是25右邊的數,25是625右邊的數,5和25都是同構數
十進制同構數
以6開頭的同構數有:
6^2=36
76^2=5776
376^2=141376
9376^2=87909376
109376^2=11963109376
7109376^2=50543227109376
87109376^2=7588043387109376
787109376^2=619541169787109376
1787109376^2=3193759921787109376
81787109376^2=6689131260081787109376
40081787109376^2=1606549657881340081787109376
同構數算法程序
找出1至10000之間的全部同構數的C語言程序
方法一:依次比較所檢查的正整數 k 和它的平方數 n 的末尾數字
#include <stdio.h> int main() { int k, n, t; for (k =1; k < 10000; k++) { t = k; //臨時保存 k的值(在循環中不能修改k的值) n = k * k; while(t != 0) { if (n % 10 != t % 10); break; n = n / 10; t = t / 10; } if(t == 0) printf("%d\t%d\n", k, k * k); } }
方法二:把所檢查的正整數 a 的平方數 b 對 10、100、1000和10000取餘,並與 a 進行比較。
#include <stdio.h> int main() { int a, b; for(a = 1; a < 10000; a++) { b = a * a; if(b % 10 == a || b % 100 == a || b % 1000 == a || b % 10000 == a) printf("%d\t%d\n",a, b); } }
方法三:設 i 表示待檢查的數,k 為相應的 10 的倍數,j 為平方數。比較 j 對 k 取餘的結果是否等於 i
#include<stdio.h> int main() { long i, j, k; k = 10; for (i = 1;i <= 10000;i++){ //i 為待檢查的數 if (i == k) k *= 10; j = i * i; if(j % k == i) printf("%ld\t%ld\n",i,j); } }
找出 1~10000 之間同構數的PASCAL程序:
program isomorph; var i,j,k:long int; begin k := 10; for i := 1 to 10000 do begin if i = k then k := k * 10; j := i * i; if (j mod k) = i then writeln(i:8, j:8); end; end;
1~1000之間的同構數有下面這七個(第二列是它的平方):
1 1
5 25
6 36
25 625
76 5776
376 141376
625 390625