实现统计同构数关键算法。编写程序输出 2~99 之间的同构数。同构数是指这个数为该数平方的尾数,例如 5 的平 方为 25,6 的平方为 36,25 的平方为 625,则 5、6、25 都为同构数。

实现统计同构数关键算法。编写程序输出 2~99 之间的同构数。同构数是指这个数为该数平方的尾数,例如 5 的平 方为 25,6 的平方为 36,25 的平方为 625,则 5、6、25 都为同构数。

注意:调用带有一个输入参数的函数(或方法)实现,此函数(或方法)用于判断某个整数
是否为同构数,输入参数为一个整型参数,返回值为布尔型(是否为同构数)

public class week3 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		System.out.println("输入一个整数,判断是否是同构数:");
		if(isTGNumber(in.nextInt())){
			System.out.println("这是一个同构数");
		}else{
			System.out.println("这不是一个同构数");
		}
	}
	//判断是否为同构数
	public static boolean isTGNumber(int number){
		int numberPow  = (int) Math.pow(number, 2);//该数的平方
		//获取该数的个位数
		System.out.println(number);
		int numg = number / 1 % 10;//获取该数的个位数
		int nums = number / 10 % 10;//获取该数的十位数
		System.out.println(numberPow);
		int g = numberPow / 1 % 10;//获取开平方后的个位数
		int s = numberPow / 10 % 10;//获取开平方后的十位数
		//判断个位和十位是否相同
		//如果输入的是一位数
		if(nums == 0){
			//只判断个位,不判断十位数
			if(numg == g){
				return true;
			}
		//输入的是两位数
		}else if(numg == g && nums == s){
			return true;
		}
		return false;
	}
}
  • 6
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
同构数的是两个数的数字排列顺序相同,但是数字不同的数。例如,123和231就是一对同构数。以下是Python编写程序,找出1~1000的全部同构数算法实现的步骤和思路: 步骤1:定义一个函数 is_isomorphic(n1, n2) ,用于判断两个数 n1 和 n2 是否为同构数。该函数的实现思路如下: - 首先将 n1 和 n2 转换为字符串形式。 - 然后比较两个字符串的长度是否相同,如果不同则肯定不是同构数。 - 如果长度相同,则可以将两个字符串中的每个字符都进行比较。如果两个字符串中的每个字符在另一个字符串中都有相应的匹配,则它们是同构数。否则,它们不是同构数。 步骤2:在主函数中,循环遍历1~1000之间的所有数字,对于每个数字,将其与1~1000之间的其他数字进行比较,判断它们是否为同构数。如果是,则输出这对同构数。 下面是完整的Python代码实现: ```python def is_isomorphic(n1, n2): s1, s2 = str(n1), str(n2) if len(s1) != len(s2): return False char_map = {} for i in range(len(s1)): c1, c2 = s1[i], s2[i] if c1 not in char_map: char_map[c1] = c2 elif char_map[c1] != c2: return False return True for i in range(1, 1001): for j in range(i+1, 1001): if is_isomorphic(i, j): print(i, j) ``` 这个程序首先定义了一个 is_isomorphic() 函数,用于判断两个数字是否为同构数。然后,在主函数中,我们循环遍历 1~1000 之间的所有数字,对于每个数字,将其与 1~1000 之间的其他数字进行比较,判断它们是否为同构数。如果是,则输出这对同构数。注意,我们只需要在循环中比较 i 和 j,因为如果 i 和 j 是同构数,那么 j 和 i 也一定是同构数,不需要重复计算。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值