본문 바로가기

오일러프로젝트

[오일러프로젝트] 27번문제


오일러는 다음과 같은 멋진 2차식을 제시했습니다.

n2 + n + 41

이 식의 n에다 0부터 39 사이의 숫자를 넣으면, 그 결과는 모두 소수가 됩니다.
하지만 n = 40일 때의 값 402 + 40 + 41 은 40×(40 + 1) + 41 이므로 41로 나누어지고, n = 41일 때 역시 412 + 41 + 41 이므로 소수가 아닙니다.

컴퓨터의 발전에 힘입어 n2 − 79n + 1601 이라는 엄청난 2차식이 발견되었는데, 이것은 n이 0에서 79 사이일 때 모두 80개의 소수를 만들어냅니다. 이 식의 계수의 곱은 -79 × 1601 = -126479가 됩니다.

아래와 같은 모양의 2차식이 있다고 가정했을 때,

n2 + an + b   (단 a | < 1000, | b | < 1000)

0부터 시작하는 연속된 n에 대해 가장 많은 소수를 만들어내는 2차식을 찾아서, 그 계수 a와 b의 곱을 구하세요.


위 식을 사용하면
b가 소수, a+b+1이 소수여야 한다는 사실을 알 수 있다.
이를 활용하여 brute-force..

 


Python
Ruby
Allen님의 풀이와 코드.

n=0일 때를 고려하면, b는 1~1000구간의 소수여야함. b=2라면 n=2에서 전체가 2의 배수가 되므로 b != 2 b가2가아닌 소수라면 홀수이고, n=1에서 a가 홀수여야 전체가 홀수가 됨 따라서, 홀수인 a만 찾아보면 됨.


Perl