HackerRank/JAVA

Java Primality Test

예쁜꽃이피었으면 2024. 1. 22. 15:52

 

https://www.hackerrank.com/challenges/java-primality-test/problem?isFullScreen=true

 

Java Primality Test | HackerRank

Use Java's built-in primality test method.

www.hackerrank.com

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



public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));

        String n = bufferedReader.readLine();

        bufferedReader.close();
        
        BigInteger b = new BigInteger(n);

        if( b.isProbablePrime(10) || b.equals("1")) {
            System.out.println("prime");   
        }else{
            System.out.println("not prime");
        };
    }
}

 

 

 

 

 

 


https://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html#isProbablePrime(int)

 

BigInteger (Java Platform SE 7 )

Immutable arbitrary-precision integers. All operations behave as if BigIntegers were represented in two's-complement notation (like Java's primitive integer types). BigInteger provides analogues to all of Java's primitive integer operators, and all relevan

docs.oracle.com

 

isProbablePrime, 확률적 소수 판별 함수

- import java.math.BigInteger;

-  If certainty(확실성) is ≤ 0, true is returned.

- 대략 10의 값을 넘기면 해당 값이 소수인지에 대한 판별률이 99.9%에 가까워 진다고 한다.

 

BigInteger

https://coding-factory.tistory.com/604

 

[Java] 큰 숫자(정수) 다루기 BigInteger 사용법 & 예제 총정리

BigInteger를 사용해야 하는 이유 Type 범위 int -2,147,483,648 ~ 2,147,483,647 long -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 int는 메모리 크기는 4byte로 표현할 수 있는 범위는 -2,147,483,648 ~ 2,147,483,647이고 long

coding-factory.tistory.com

-  프로그램 개발 특히 돈과 관련된 개발이나 알고리즘 문제를 풀 때 항상 최악의 상황을 고려해야 하므로 

무한의 정수가 들어갈 수 있는 가능성이 있다면 BigInteger이라는 클래스를 활용하는 것이 좋습니다.

- BigInteger은 문자열 형태로 이루어져 있어 숫자의 범위가 무한하기에 어떠한 숫자이든지 담을 수 있습니다.

//선언
BigInteger bigNumber = new BigInteger("10000");
//연산
BigInteger bigNumber1 = new BigInteger("100000");
BigInteger bigNumber2 = new BigInteger("10000");
		
System.out.println("덧셈(+) :" +bigNumber1.add(bigNumber2));
System.out.println("뺄셈(-) :" +bigNumber1.subtract(bigNumber2));
System.out.println("곱셈(*) :" +bigNumber1.multiply(bigNumber2));
System.out.println("나눗셈(/) :" +bigNumber1.divide(bigNumber2));
System.out.println("나머지(%) :" +bigNumber1.remainder(bigNumber2));
//형변환
BigInteger bigNumber = BigInteger.valueOf(100000); //int -> BigIntger

int int_bigNum = bigNumber.intValue(); //BigIntger -> int
long long_bigNum = bigNumber.longValue(); //BigIntger -> long
float float_bigNum = bigNumber.floatValue(); //BigIntger -> float
double double_bigNum = bigNumber.doubleValue(); //BigIntger -> double
String String_bigNum = bigNumber.toString(); //BigIntger -> String

 

반응형

'HackerRank > JAVA' 카테고리의 다른 글

Java BigInteger  (0) 2024.01.22
Java Exception Handling (Try-catch)  (0) 2024.01.22
Valid Username Regular Expression  (0) 2024.01.19
[작성중]Java Regex 2 - Duplicate Words  (0) 2024.01.19
[못품]Java Regex  (0) 2024.01.17