종류 그래서 나는 더 나은 자신을 설명하려고합니다 : 을 나는 수는 다음 식 사용하여 소수 여부를 확인할 수 있다는 것을 내가 찾은 파스칼의 삼각형을 사용 : 그러나정수가 모두 1 인 경우 이진수 나누기를 확인할 수있는 방법이 있습니까? 혼란 제목의
boolean isPrime= (2^(x) -2) % x == 0;
는,이 동작하기 때문에 그러나 계산하기 전에,
boolean isPrime = (2^(x-1) -1) % x==0;
이 많이 변경되지 않습니다 2의 거듭 제곱에, 그것은 내가 X> 2 다음 식을 사용할 수 있다는 것을 발견 주위에 조정의 조금 후에, 매우 빠르게 매우 큰됩니다 mod x 2 진수는 모두 1입니다 (x = 7, 63 또는 11111). 1 이진수)
이제 내 질문에이 간단한 방법을 사용하여 숫자가 소수인지 여부를 결정하는 정확한 함수를 만들 수 있습니다.
방금 Fermat 테스트를 다시 발견했습니다. https://en.wikipedia.org/wiki/Fermat_primality_test 2^(x-1) % x == 1은 x의 소수성을 증명하지 않습니다. – Henrik
'제곱에 의한 모듈러 지수화'에서 읽으십시오. 이런 종류의 일은 매우 효율적으로 할 수 있습니다 (그렇지 않으면 RSA는 실용적이지 않습니다). 페르마트 테스트는별로 좋지 않지만 실제로 관련 아이디어는 밀러 - 라빈 테스트로 이어집니다. –