目录
题目:分解平方根
题解:仅有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);
}
}