숫자 103993/33102
의 소수 확대를 계산하는 프로그램을 작성 중이며 사용자가 입력 한 숫자에 따라 모든 소수의 십진수를 인쇄하고 싶습니다. 그것은 최대 숫자 10^5
까지 빠르게 실행되지만, 프로그램에 입력 10^6
이 응답을 출력하는 데 약 5 분이 걸리는 경우. 어떻게하면 속도를 높일 수 있습니까? BigDecimal
을 사용하는 두 개의 다른 접근법과 다른 하나는 문자열을 사용하여 시도했지만 어느 것도 효율적으로 작동하지 않습니다.큰 입력에 대해 매우 느리게 실행되는 십진수 확장 프로그램
public static void main(String[] args) throws NumberFormatException,
IOException {
// BigDecimal num1 = new BigDecimal(103993);
// BigDecimal num2 = new BigDecimal(33102);
String repNum = "415926530119026040722614947737296840070086399613316";
// pw.println(num.toString());
String sNum = "3.1";
// pw.println(repNum.length());
int cases = Integer.parseInt(br.readLine());
int dec;
for (int i = 0; i < cases; i++) {
sNum = "3.1";
dec = Integer.parseInt(br.readLine());
if (dec == 0)
pw.println("3");
else if (dec <= 52) {
sNum += repNum.substring(0, dec - 1);
pw.println(sNum);
} else {
while (dec > 52) {
sNum += repNum;
dec -= 51;
}
sNum += repNum.substring(0, dec - 1);
pw.println(sNum);
}
// pw.println(num1.divide(num2, dec,
// RoundingMode.FLOOR).toString());
}
}
'dec'과'cases'는 무엇입니까? – Joni
dec은 확장 할 소수점의 수이며, 여러 가지 방법으로 소수점 이하 자릿수를 출력하려는 경우입니다. 예 2 4 6을 입력하면 4 자리수로 확장 된 숫자가 출력됩니다 다시 인쇄 할 것입니다. –