数论问题之平方回文算法

平方回文数的定义是:一个数字的平方是回文数。

例如:
1 的平方是 1,是回文数,所以 1 是一个平方回文数。
2 的平方是 4,不是回文数,所以 2 不是平方回文数。
3 的平方是 9,是回文数,所以 3 是一个平方回文数。
121 的平方是 14641,是回文数,所以 121 是一个平方回文数。

代码示例:

public class SquarePalindrome {
    public static void main(String[] args) {
        // 输出 1000 以内的平方回文数
        printSquarePalindromes(1000);
    }

    /**
     * 打印指定范围内的平方回文数
     * @param limit 上限值
     */
    public static void printSquarePalindromes(int limit) {
        // 遍历从 1 到 limit 的所有数字
        for (int i = 1; i < limit; i++) {
            // 计算当前数字的平方
            int square = i * i;
            // 如果平方是回文数,则打印出来
            if (isPalindrome(square)) {
                System.out.println(square);
            }
        }
    }

    /**
     * 判断一个数字是否为回文数
     * @param num 待判断的数字
     * @return 是否为回文数
     */
    private static boolean isPalindrome(int num) {
        // 将数字转换为字符串
        String numStr = String.valueOf(num);
        // 使用两个指针,一个从左往右,一个从右往左遍历字符串
        // 如果对应位置的字符不相同,则不是回文数
        int left = 0, right = numStr.length() - 1;
        while (left < right) {
            if (numStr.charAt(left) != numStr.charAt(right)) {
                return false;
            }
            left++;
            right--;
        }
        // 遍历完成后,说明是回文数
        return true;
    }
}

这个算法的实现步骤如下:

  1. 在 printSquarePalindromes 方法中,遍历从 1 到 limit 的所有数字。
  2. 对于每个数字,计算它的平方。
  3. 调用 isPalindrome 方法,检查这个平方数是否是回文数。
  4. 如果是回文数,则输出这个平方数。

isPalindrome 方法是用于检查一个数字是否为回文数的通用方法,与前面提到的方法类似。

通过这个算法,我们可以在 1000 以内找到所有的平方回文数。

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值