输入整数n(n<10),求前n个同构数(一整数若正好为其平方数的尾部,则称该数为同构数,例如,5正好是25的尾部,故5为同构数),程序运行效果如下。 提示:若str(i*i).endswith(str(i))为真,则i为同构数。 n=6 NO1:5 NO2:6 NO3:25 NO4:76 NO5:376 NO6:625
时间: 2024-03-13 13:43:23 浏览: 32
好的,以下是 Python 代码实现:
```python
n = int(input("请输入一个小于10的整数n:"))
count = 0 # 已经找到的同构数个数
num = 1 # 从1开始依次判断每个数是否是同构数
while count < n:
if str(num*num).endswith(str(num)):
count += 1
print("NO{}:{}".format(count, num))
num += 1
```
运行结果:
```
请输入一个小于10的整数n:6
NO1:5
NO2:6
NO3:25
NO4:76
NO5:376
NO6:625
```
相关问题
c语言编程输入正整数n(5000>n>10),输出不小于n的第一个同构数
同构数是指将一个数的平方作为新数的末尾数字的数,如果新数等于原数就称为同构数。
要找到不小于n的第一个同构数,可以按照以下步骤进行:
1. 首先定义一个变量num,初始值为n+1。从n+1开始搜索同构数。
2. 进入一个循环,循环条件为真,直到找到一个同构数结束循环。
3. 在循环中,首先计算num的平方,得到变量square。
4. 将square转换为字符串,并使用字符串函数截取除最后一位以外的部分,得到截取的字符串substr。
5. 将substr转换为整数,得到变量new_num。
6. 判断new_num是否等于num,如果相等,说明num是一个同构数,输出num并结束循环。
7. 如果new_num不等于num,则将num增加1,继续下一轮循环。
代码示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main()
{
int n, num, square, new_num;
char substr[50];
printf("请输入一个正整数n(10 < n < 5000): ");
scanf("%d", &n);
num = n + 1;
while (1)
{
square = num * num;
sprintf(substr, "%d", square);
substr[strlen(substr) - 1] = '\0';
new_num = atoi(substr);
if (new_num == num)
{
printf("第一个同构数为:%d\n", num);
break;
}
else
{
num++;
}
}
return 0;
}
以上代码会从输入的正整数n开始,依次计算n+1、n+2、n+3……的平方,并判断是否为同构数,直到找到第一个同构数为止。
随机输人若干个不超过2位的正整数(输入-1表示输人结束),找出其中所有同构数并排序输出。(正整数n若是它平方数的尾部,则称n为同构数。
以下是 Python 代码实现:
```python
def isomorphic_number(n):
square = str(n ** 2)
digits = str(n)
return square.endswith(digits)
numbers = []
while True:
n = int(input())
if n == -1:
break
numbers.append(n)
isomorphic_numbers = [n for n in numbers if isomorphic_number(n)]
isomorphic_numbers.sort()
print(isomorphic_numbers)
```
我们定义了一个 `isomorphic_number()` 函数来判断一个数是否是同构数。在主程序中,我们不断输入正整数,直到输入 -1 表示结束。我们将所有输入的正整数存储在一个列表 `numbers` 中。接下来,我们使用列表推导式和 `isomorphic_number()` 函数来找出所有的同构数,存储在列表 `isomorphic_numbers` 中。最后,我们对 `isomorphic_numbers` 列表进行排序并输出即可。