Java 在进行任何平方运算之前,如何计算需要超过100万的平方数

Java 在进行任何平方运算之前,如何计算需要超过100万的平方数,java,Java,此代码提示用户输入一个有效的整数,并重复对该整数进行平方运算,直到其超过100万。它也是类型安全的。在我的程序进行任何平方运算之前,有没有一种方法可以计算出一个整数超过100万所需的平方数 import java.util.Scanner; public class Squaring{ public static void main (String [] args) { Scanner scan = new Scanner(System.in); long number; long num

此代码提示用户输入一个有效的整数,并重复对该整数进行平方运算,直到其超过100万。它也是类型安全的。在我的程序进行任何平方运算之前,有没有一种方法可以计算出一个整数超过100万所需的平方数

import java.util.Scanner;

public class Squaring{

public static void main (String [] args) {

Scanner scan = new Scanner(System.in);
long number;
long number2;
int count = 0;
number = getInt("Enter an integer greater than 1:",scan);

while ( number <= 1) {
  scan.nextLine();
  System.out.println(number +" is not greater than 1.");
  number = getInt("Enter an integer greater than 1:",scan);

}
number2 = number;
while ( number < 1000000) {
  number = number * number;
  System.out.println(number);
  count++;
}      

System.out.println(number2 + " exceeded 1,000,000 after "+ count + " squarings.");  }  

public static int getInt(String prompt, Scanner scan) {

int input;    
System.out.println( prompt );
while ( !scan.hasNextInt() ) { 
  String garbage = scan.nextLine(); 
  System.out.println( garbage + " is not valid input.\n" + prompt);
}

input = scan.nextInt();

return input;
} 
}
import java.util.Scanner;
公共类平方{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
长数;
长数2;
整数计数=0;
number=getInt(“输入大于1的整数:”,扫描);

而(数字是。避免使用更优雅的代数方法,使用基于预计算和反向工作的if检查:

1e6
^ 0.5  = 1000      (1)
^ 0.5 ~=   31.6    (2)
^ 0.5 ~=    5.6    (3)
^ 0.5 ~=    2.4    (4)
^ 0.5 ~=    1.5    (5)
由于您指定了整数输入(并假定为正),因此可以很快获得一些边界。要超过一百万:

  • 值为1或更小的值永远不会达到该值
  • 值为2将需要5次平方运算
  • 值3到5将进行4次平方运算
  • 值6到31将进行3次平方运算
  • 值32到999将进行2次平方运算
  • 值1000到999999只需进行一次平方运算

现在,您的算法简化为一个简单的if检查。

您需要编辑代码库中的问题部分在代码标记之外。呜呜,我刚刚修复了@Sand