pta-descomposición raíz cuadrada [programación java]

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);
    }
}

Supongo que te gusta

Origin blog.csdn.net/qq_61649579/article/details/125953737
Recomendado
Clasificación