首页 > 试题广场 >

平方根

[编程题]平方根
  • 热度指数:25341 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
\hspace{15pt}给定一个正整数 n,求 \sqrt{n} 的整数部分,即对 \sqrt{n} 向下取整的结果。

\hspace{15pt}例如,\sqrt{5}=2.236\ldots 向下取整后为 2\sqrt{16}=4.000\ldots 向下取整后为 4

输入描述:
\hspace{15pt}在一行中输入一个整数 n \left(1 \leqq n \leqq 10^9\right)


输出描述:
\hspace{15pt}输出一个整数,表示 \sqrt{n} 向下取整后的值。
示例1

输入

5

输出

2

说明

\sqrt{5}\approx2.236,向下取整后为 2
示例2

输入

16

输出

4

说明

\sqrt{16}=4.000,向下取整后为 4
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n = in.nextInt();
        int x;
        int i;
        for(i=0;i<n;i++){
            x=i*i;
            if(x>n){
            break;}
        }
        System.out.print(i-1);
    }
}

暴力解决问题,不调用函数
发表于 2025-12-09 11:04:21 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        int n=in.nextInt();
        System.out.println((int)Math.sqrt(n));
    }
}
发表于 2025-10-30 11:48:45 回复(0)
import java.util.Scanner;

// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);

        int a = in.nextInt();

        // 计算平方根并且向下取整
        // Math.sqrt(n)返回double类型的平方根,强制转换为int会自动截断小数部分(即向下取整)
        int res = (int)Math.sqrt(a);

        System.out.println(res);        

        in.close();
    }
}

  1. 核心逻辑
    • 利用 Java 内置的Math.sqrt(n)方法计算 n 的平方根,返回值为double类型
    • 将double类型的平方根强制转换为int类型,此时会自动截断小数部分,得到向下取整的结果(符合题目要求)
  1. 边界情况处理
    • 最小输入 n=1:Math.sqrt(1)=1.0 → 输出1
    • 最大输入 n=10⁹:其平方根约为 31622.776,强制转换后得到31622
    • 完全平方数(如 n=25):Math.sqrt(25)=5.0 → 输出5

发表于 2025-10-04 13:03:52 回复(0)