Tabla de contenido
Tema: Descomponer raíces cuadradas
Solución de problemas: solo solución de problemas de Java
tema:
Si un número se puede expresar como el cuadrado de un entero, se llama número cuadrado perfecto, como 4, 9 y 100 son todos números cuadrados perfectos.
Entre los números naturales, los números cuadrados perfectos son raros y las raíces cuadradas de una gran cantidad de números naturales no son números enteros. 2 no es un número entero.
Sin embargo, la raíz cuadrada de todos los números naturales se puede expresar como el producto de un número natural y una raíz cuadrada, como 90=3⋅10.
Por supuesto, la raíz cuadrada de algunos números, como 2, solo se puede expresar como 1⋅2;
mientras que la raíz cuadrada de un número cuadrado perfecto, como 100, se puede expresar como 10⋅1.
Ahora, su tarea es escribir un programa que ingrese un número natural y genere dos números naturales, que representan el número natural y el número cuadrado descompuestos por la regla de descomposición anterior, respectivamente.
Formato de entrada:
Un número natural dentro del rango expresable por un entero de 32 bits.
Formato de salida:
Dos números naturales, el primer número natural representa la parte completa de la raíz cuadrada de la raíz cuadrada de la entrada, y el segundo número natural representa el número cuadrado restante.
Ejemplo de entrada 1:
90
muestra de salida 1
3 10
Muestra de entrada 2
2
Ejemplo de salida 2
1 2
Ejemplo de entrada 3
16
Ejemplo de salida 3
4 1
límite de longitud de código
16 KB
límite de tiempo
300ms
limite de memoria
64 MB
respuesta:
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);
}
}