java - 如何指定给定数字是否具有整数平方根?

标签 java

<分区>

如何修改我所写的内容以指定用户输入的数字是否为完全正方形?

我试过放置各种 % 展示位置,但无济于事。我在网上找到的解决方案没有使用我想要的 M.O。

我将包括一个我在网上找到的解决方案,具有讽刺意味的是,考虑到本书强调避免使用蛮力技术,我认为该解决方案效率低下,而且似乎没有产生预期的结果。

这个问题来自 Java 艺术与科学第 5 章,编程练习编号 7。

/**
 * This program tells the user whether the number they've entered returns a perfect square. *
 */

import acm.program.*;
import java.lang.Math;

public class Squares extends ConsoleProgram {

    public void run() {
        println("This program determines whether the number you're about to enter is a perfect square");
        int s = readInt("Enter a positive number here: ");
        switch (s) {

        }

        if (isPerfectSquare(s)) {
            ;
        }
        {
            println((int) Math.sqrt(s));
        }
    }

    private boolean isPerfectSquare(int m) {
        int sqrt = (int) Math.sqrt(m);
        return (sqrt * sqrt == m);
    }
}

这是我认为有缺陷的解决方案:

/*
 * File: PerfectSquare.java
 * -------------------------
 * This program test the isPerfectSquare(n) 
 * that returns true if the integer n is a 
 * perfect square.
 */
import acm.program.*;
import java.lang.Math;

public class Book extends ConsoleProgram {

    private static final int MIN_NUM = 1;
    private static final int MAX_NUM = 100000000;

    public void run() {
        int cnt = 0;
        for (int i = MIN_NUM; i <= MAX_NUM; i++) {
            if (isPerfectSquare(i)) {
                cnt++;
                println(cnt + ": " + (int) Math.sqrt(i) + ": " + i);
            }
        }
    }

    private boolean isPerfectSquare(int n) {
        int sqrt = (int) Math.sqrt(n);
        return (sqrt * sqrt == n);
    }
}

最佳答案

要知道给定的数字是否具有完美的平方根,您可以尝试如下所示 -

if((Math.sqrt(m))%1 == 0) {
   System.out.println("Number (m) has a Perfect Square-Root");
} else {
   System.out.println("Number (m) does not have a Perfect Square-Root");
}

因为,如果一个数字有一个完美的平方根,那么这个数字本身就是一个完美的平方根。

这会有所帮助!

关于java - 如何指定给定数字是否具有整数平方根?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30521886/

相关文章:

java - 如何在android中逐行阅读?

java - Mockito 无法为 @Async 方法注入(inject)模拟

java - 在输入流上获取 NULL 指针异常

Java 四舍五入到下一个 5000

java - 用于软件指标的 Eclipse 插件 - 工作区级别摘要

java - 如何在另一个类中使用在循环内部定义的字符串?

java - Visual Studio 代码调试器 (Java)

java - ConcurrentHashMap 中的并发级别

java - 无法在 Java 8 中将 int 转换为 long

java - 为什么我们不在 bindView 中使用 moveToFirst()?