골
입력을받는 프로그램 / 함수를 만들고 임의의 정수 쌍이 소수 N
인지 확인 N
하고를 반환합니다 sqrt(6 * N / #coprime)
.
TL; DR
이러한 과제는 Pi를 근사화하기 위해 자연과 두뇌 (및 일부 재사용 가능한 리소스) 만 필요한 알고리즘 시뮬레이션입니다. 좀비 종말 중에 Pi가 정말로 필요하다면,이 방법들은 탄약을 낭비 하지 않습니다 ! 앞으로 8 가지 과제가 더 있습니다. 체크 아웃 샌드 박스 포스트 추천을 할 수 있습니다.
시뮬레이션
우리는 무엇을 시뮬레이션하고 있습니까? 음, 두 개의 임의의 정수가 상대적으로 소수 일 가능성이 높습니다 (즉, coprime 또는 gcd == 1) 6/Pi/Pi
. 따라서 Pi를 계산하는 자연스러운 방법은 두 개의 버킷 (또는 소수)의 암석을 퍼내는 것입니다. 그들을 세십시오; 그들의 gcd 가 1 인지 확인하십시오 . 반복. 이것을를 수행 한 후 몇 시간이 많이, sqrt(6.0 * total / num_coprimes)
쪽으로 경향이 있습니다 Pi
. 포스트 아포 칼립스 세계에서 제곱근을 계산해도 신경이 쓰이더라도 걱정하지 마십시오! 이를 위한 뉴턴의 방법 이 있습니다.
우리는 이것을 어떻게 시뮬레이트합니까?
- 입력 받기
N
- 다음과 같이하십시오
N
:- 임의의 양의 정수를 균일하게 생성
i
하고j
- 와
1 <= i , j <= 10^6
- 만약
gcd(i , j) == 1
:result = 1
- 그밖에:
result = 0
- 임의의 양의 정수를 균일하게 생성
N
결과 의 합계를 취하십시오.S
- 반환
sqrt(6 * N / S)
사양
- 입력
- 유연성, 표준 방식 (예 : 함수 매개 변수, STDIN) 및 표준 형식 (예 : 문자열, 이진)으로 입력
- 산출
- 유연하고 표준적인 방법으로 출력합니다 (예 : 반환, 인쇄)
- 공백, 후행 및 선행 공백이 허용됩니다.
- 정확도, 정밀도의 적어도 4 소수점을 제공하십시오 (예
3.1416
)
- 채점
- 최단 코드 승리!
테스트 사례
무작위 확률로 인해 결과가 이것들과 일치하지 않을 수 있습니다. 그러나 평균적으로 주어진 값에 대해이 정도의 정확도를 얻을 수 N
있습니다.
Input -> Output
----- ------
100 -> 3.????
10000 -> 3.1???
1000000 -> 3.14??
N=10^6
.
N = 1000000
프로그램N
이 너무 큰 경우 스택 오버플로가 반환되면 괜찮 습니까?