2015-05-29 60 views
4

怎樣更改我已寫信給指定用戶輸入的號碼是否是一個完美的正方形?如何指定給定的數字是否具有整數平方根?

我曾嘗試放置各種%的展示位置,但沒有成功。我在網上找到的解決方案不使用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); 
    } 
} 

回答

1

知道是否給定數量有一個完美的平方根,你可以嘗試像下面給出的 -

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

因爲,我如果一個數字有一個完美的平方根,那麼數字本身就是一個完美的正方形。

這將有助於!

+1

如果(M%10不是(0,1,4,5,9)之一){返回false; }否則返回{布魯斯的邏輯;} –

+2

@ElgsQianChen我想我已經給將足以邏輯,不是嗎? –

+2

是的,這只是mod操作比平方根操作便宜得多。但坦率地說,在大多數情況下,如果代碼不經常執行,我不關心這個問題。但是如果你正在進行遊戲編程,那麼這個檢查可能是值得的。 –

相關問題