一个数出现在它的平方数的右端,这个数称为同构数(N最大可以到100000)。 例如:5出现在25的右侧,5是同构数;25出现在625的右侧,25也是同构数。 请编程求出1~N之间的所有同构数。java实现
时间: 2024-05-05 20:17:49 浏览: 16
```java
public class AutomorphicNumbers {
public static void main(String[] args) {
int n = 100000;
System.out.println("Automorphic numbers up to " + n + ":");
for (int i = 1; i <= n; i++) {
if (isAutomorphic(i)) {
System.out.print(i + " ");
}
}
}
// 判断一个数是否为同构数
private static boolean isAutomorphic(int num) {
int square = num * num;
while (num > 0) {
if (num % 10 != square % 10) {
return false;
}
num /= 10;
square /= 10;
}
return true;
}
}
```
相关问题
编写程序 找出1到1000(包括1000)的全部同构数 所谓同构数,就是它出现在它平方数的右端
非常感谢您的提问!以下是程序的代码:
```python
def isomorphic(n):
square = n * n
digits_n = sorted(str(n))
digits_square = sorted(str(square)[-len(str(n)):])
return digits_n == digits_square
isomorphic_numbers = [n for n in range(1, 1001) if isomorphic(n)]
print(isomorphic_numbers)
```
这个程序可以找出1到1000(包括1000)的全部同构数。同构数是指一个数出现在它平方数的右端,比如25是同构数,因为25的平方是625,25出现在了625的右端。
找出1与100之间的全部“同构数”。“同构数”是这样一个数,它出现在它的平方数的右端。
同构数有两种情况:一种是只有一位数,另一种是有偶数位数。对于只有一位数的同构数,只有0、1、5、6这四个数字是同构数。对于有偶数位数的同构数,它的个位数必须是0、1、5、6中的一个,十位数必须是2或3,百位数必须是4或7,千位数必须是8或9,以此类推。因此,1到100之间的全部同构数为0、1、5、6、25、76、376、625。