How do I specify whether a given number has a whole number square root?
本问题已经有最佳答案,请猛点这里访问。
如何修改我写的内容来指定用户输入的数字是否是一个完美的正方形?
我试过放置各种%的位置,但没有用。我在网上找到的解决方案没有使用我想要的M.O。
我将包括一个我在网上找到的解决方案,我认为这是具有讽刺意味的低效,因为这本书的重点是避免蛮力技术,似乎没有产生预期的结果。
这个问题是从Java的艺术和科学第5章,编程练习7。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | /** * 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); } } |
以下是我认为有缺陷的解决方案:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | /* * 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); } } |
要知道一个给定的数字是否有一个完美的平方根,可以尝试如下所示-
1 2 3 4 5 |
例如,如果一个数有一个完美的平方根,那么这个数本身就是一个完美的平方。
这会有帮助的!