Objectif
Créez un programme / une fonction qui prend une entrée N, vérifiez si Nles paires aléatoires d’entiers sont relativement premiers et retourne sqrt(6 * N / #coprime).
TL; DR
Ces défis sont des simulations d’algorithmes qui ne nécessitent que la nature et votre cerveau (et peut-être quelques ressources réutilisables) pour approcher Pi. Si vous avez vraiment besoin de Pi lors de l'apocalypse des zombies, ces méthodes ne gaspillent pas les munitions ! Huit autres défis sont à venir. Consultez le message du bac à sable pour faire des recommandations.
Simulation
Que simulons-nous? Eh bien, la probabilité que deux entiers aléatoires soient relativement premiers (c.-à-d. Coprime ou gcd == 1) est 6/Pi/Pi, donc un moyen naturel de calculer Pi serait d'extraire deux seaux (ou poignées) de roches; compte les; voir si leur gcd est 1; répéter. Après avoir fait cela plusieurs fois, vous sqrt(6.0 * total / num_coprimes)aurez tendance à Pi. Si calculer la racine carrée dans un monde post-apocalyptique vous rend nerveux, ne vous inquiétez pas! Il y a la méthode de Newton pour cela.
Comment simulons-nous cela?
- Prendre une entrée
N - Faites les
Ntemps suivants :- Générer uniformément des entiers positifs aléatoires,
ietj - Avec
1 <= i , j <= 10^6 - Si
gcd(i , j) == 1:result = 1 - Autre:
result = 0
- Générer uniformément des entiers positifs aléatoires,
- Prenez la somme des
Nrésultats,S - Revenir
sqrt(6 * N / S)
spécification
- Contribution
- Flexible, prenez les entrées de n'importe quelle manière standard (par exemple, paramètre de fonction, STDIN) et dans n'importe quel format standard (par exemple, chaîne, binaire)
- Sortie
- Flexible, donnez la sortie de n'importe quelle manière standard (retour, impression, etc.)
- Les espaces blancs, les espaces de fuite et les espaces de début sont acceptables
- Précision, veuillez fournir au moins 4 décimales de précision (c.-à-d.
3.1416)
- Notation
- Le code le plus court gagne!
Cas de test
Votre sortie peut ne pas s'aligner sur celles-ci, à cause du hasard. Mais en moyenne, vous devriez obtenir autant de précision pour la valeur donnée de N.
Input -> Output
----- ------
100 -> 3.????
10000 -> 3.1???
1000000 -> 3.14??
N=10^6.

N = 1000000ou est-il acceptable si le programme renvoie par exemple un débordement de pile s'ilNest trop volumineux?