gpt4 book ai didi

java - 计算两个数字之间的平方数,只适用于小数字,为什么?

转载 作者:搜寻专家 更新时间:2023-11-01 04:04:19 25 4
gpt4 key购买 nike

问题是找出两个数字之间的平方数。

下面的代码适用于小数字,但无法处理大数字。我该如何纠正这个问题?

 import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;

public class NumOfSqrs {


public static void main(String[] args) {

try{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

String input;
int line = 0;
int testCases;
int numOfSqrt = 0;
int j = 0;

while((input=br.readLine())!=null){

if(line == 0){
testCases = Integer.parseInt(input);
line = line +1;
}
else{
String[] splitter = input.toString().split(" ");

//Here splitter gives two numbers, we need to find no of sqrs b/w these numbers for eg say 3 and 9

for(int i = Integer.parseInt(splitter[0]); i<=Integer.parseInt(splitter[1]) ; i++){

String value = ""+Math.sqrt(i);
String[] isSqrt = value.toString().split("\\.");
//System.out.println(""+isSqrt[0] + "" + isSqrt[1]);

//Here lets say if 'i' is 4 (i.e 2.0) then isSqrt[0] = 2, isSqrt[1] = 0 and if isSqrt[1] != 1 then its obvious that its not a perfect square

if(isSqrt[1].length() == 1){
numOfSqrt++;
}

}
System.out.println(""+numOfSqrt);
}
numOfSqrt = 0;
}


}catch(IOException io){
io.printStackTrace();
}


}
}

最佳答案

您确定正方形(转换为字符串并按点拆分)的技术很狡猾。

这也是不必要的——你可以在一行中使用纯数字方法:

int low, high; // fill from input
int numOfSqrt = (int) (Math.floor(Math.sqrt(high)) - Math.ceil(Math.sqrt(low)) + 1);

关于java - 计算两个数字之间的平方数,只适用于小数字,为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22480841/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com