pta-分解平方根【java编程】

目录

题目:分解平方根

题解:仅有java题解


题目:

若一个数能表示成某个整数的平方的形式,则称这个数为完全平方数,如4、9、100都是完全平方数。

自然数中,完全平方数是少数,大量的自然数的平方根不是整数。如2​就不是整数。

不过,所有的自然数的平方根都可以被表示为一个自然数和一个平方根的乘积,如90​=3⋅10​。
当然,有些数的平方根,比如2​,只能被表示为1⋅2​;
而完全平方数的平方根,如100​则可以表示为10⋅1​。

现在,你的任务是写一个程序,输入一个自然数,输出两个自然数,分别表示上述分解法则分解得到的自然数和平方数。

输入格式:

一个自然数,在32位的整数可以表达的范围内。

输出格式:

扫描二维码关注公众号,回复: 15577340 查看本文章

两个自然数,第一个自然数表示输入的平方根中的完全平方根部分,第二个自然数表示剩下的平方数。

输入样例1:

90

输出样例1

3 10

输入样例2

2

输出样例2

1 2

输入样例3

16

输出样例3

4 1

代码长度限制

16 KB

时间限制

300 ms

内存限制

64 MB

题解:

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        //输入一个数n
        int n = scanner.nextInt();
        int mysqrt = 0;
        int sum = 0;
        //直接对数n开平方后往下找
        for (int i = (int) Math.sqrt(n); i >= 2; i--) {
            // 找到平方可余0的质因数i后
            // 1.设质因数sqrt为i
            // 2.将n除以i^2
            // 3.跳出循环并输出结果"mysqrt * sqrt(i)"
            if (n % (i * i) == 0) {
                mysqrt = i;
                n = n / (i * i);
                break;
            }
        }
        if (mysqrt != 0)
            System.out.print(mysqrt);
        else
            System.out.print(1);
        //最后输出剩余的n即可
        if (n > 1)
            System.out.println(" " + n);
        else
            System.out.println(" " + 1);
    }
}

猜你喜欢

转载自blog.csdn.net/qq_61649579/article/details/125953737