Pi. C'est un grand nombre plein de charme et de mystère qui n'est qu'une constante mais pas seulement une constante. Ce n'est pas facile à prouver, mais n'est-ce pas le nombre irrationnel et transcendantal le plus familier?
Il y a une histoire qui a été recherchée de diverses manières. Comme cela n'a rien à voir avec cet article, je n'expliquerai pas la méthode spécifique, mais même avec un ordinateur portable normal, s'il s'agit d'une spécification moderne, vous pouvez facilement trouver environ 100 chiffres (en secondes). La théorie des raisons pour lesquelles il est nécessaire est généralement difficile, mais c'est facile si vous acceptez la méthode de calcul. Je mentionnerai la valeur pour le moment π = 3,141592653589 793238462643 383279502884 197169399375 105820974944 592307816406 286208998628 034825342117 067982148086 513282306647 ... et ainsi de suite.
Quelle est la fraction approximative de ce sujet? C'est une histoire. Si vous voulez le faire strictement, vous devez penser à la densité de nombres réels (nombres rationnels et irrationnels) que vous étudiez en mathématiques universitaires, mais vous pouvez simplement l'expliquer intuitivement.
Tout d'abord, le rapport de circonférence est un nombre déraisonnable. Je l'admets également. Je ne sais pas si c'est complètement aléatoire. Le nombre au nième chiffre est dit aléatoire. Par contre, pour les nombres rationnels, où apparaît toujours la boucle? 1 ÷ 6 = 0,666 ... et 6 boucles, et 123 ÷ 999 = 0,123123123 ... et 123 boucles. Vous pouvez également écrire 6 ÷ 2 comme 6 ÷ 2 = 3 = 2.999 ..., donc même s'il est divisible, une boucle apparaîtra. La présence ou l'absence de boucles est l'une des principales différences entre les nombres rationnels et irrationnels. De cette façon, c'est un nombre qui est complètement différent du nombre rationnel et du nombre irrationnel, mais il est possible de créer un nombre rationnel aussi proche que possible du nombre rationnel appelé le rapport de circonférence. Je dis parfois «dense» avec des mots difficiles, mais pour l'expliquer grossièrement, la suite de nombres rationnels An
A_1=3, \quad A_2=3.1, \quad A_3=3.14,\quad ...
Si vous décidez, la limite de cette séquence de nombres correspondra au rapport de circonférence. Cela semble étrange pour un moment quand on dit que la limite est la même qu'un nombre déraisonnable même si seuls les nombres rationnels apparaissent, mais c'est intuitivement convaincant. Je me demande si.
Après tout, vous pouvez créer des fractions aussi proches du ratio de circonférence que vous le souhaitez.
Considérons le problème suivant ici
\text{ensemble$F_n$Est défini comme suit.}\\
F_n:=\{a/b\mid b\neq 0,\quad 0 \leq a,b \leq 10^n-1,\quad a,b\in \mathbb{Z} \}
Et. En ce moment,
F_n\text{La plupart sous}\pi\text{Ce qui est proche de?}
En d'autres termes
F_1\text{Est un ensemble de nombres qui peuvent être faits de 1 ÷ 1 à 9 ÷ 9}
F_2\text{Est un ensemble qui peut être fait de 1 ÷ 1 à 99 ÷ 99.}
Alors, quelle est la fraction la plus proche du rapport de circonférence qui limite le nombre de chiffres dans la molécule du dénominateur? Appelons cela p (n).
Et les faits suivants sont connus.
\begin{align*}
p(1)&=3/1\\
p(2)&=22/7\\
p(3)&=355/113\\
p(4)&=355/113=p(3)
\end{align*}
En d'autres termes, 355/113 est une approximation extrêmement précise !! C'est un fait très intéressant personnellement, car vous pouvez utiliser jusqu'à 4 chiffres dans le dénominateur, mais 3 ÷ 3 chiffres est une fraction précise. Cependant, le simple fait de le savoir comme un fait m'a fait me demander: "Vraiment?" Puis le programme entre en jeu. Faisons une recherche à tour de rôle avec le programme.
Cette fois, nous vérifierons jusqu'à 4 chiffres / 4 chiffres, donc le montant du calcul par tour est d'environ 10000 * 10000 = 10 ^ 8 Si tel est le cas, vous pouvez le vérifier par round robin, mais vous voudrez peut-être demander p (8) à l'avenir, alors imaginons un moyen d'omettre certains calculs.
Ingéniosité 1: commencez à rechercher des molécules à partir du dénominateur * 3 Ingéniosité 2. Insérez une action pour arrêter au milieu Je pense que cela seul réduira considérablement la quantité de calcul, donc je vais l'implémenter avec ça!
Étant donné que la capacité du programme est extrêmement insuffisante, je l'écrirai honnêtement.
pi=3.141592653589793#Je me demande si cela suffit
n=int(input())
check=((10**n)-1)//3
ans=100
ans_list=[100,1]
for i in range(1,check+1):#C'est le dénominateur
for j in range(3*i,(10**n)):
frac=j/i
if abs(frac-pi)<abs(pi-ans):
ans=frac
ans_list=[j,i]
else:
if frac>ans:
break
print(ans)
print(ans_list)
1
>>>3.0
>>>[3, 1]
2
>>>3.142857142857143
>>>[22, 7]
3
>>>3.1415929203539825
>>>[355, 113]
4
>>>3.1415929203539825
>>>[355, 113]
5
>>>3.1415926415926414
>>>[99733, 31746]
Même avec 4 chiffres ÷ 4 chiffres, 355/113 est vraiment le plus fort.
355/113 est un grand nombre. Au fait, le mot de passe de mon iPhone était le 355113 il y a longtemps.
C'est assez lent autour de n = 5, donc j'apprécierais que quelqu'un puisse l'améliorer.
Il y a math.pi en maths, alors je pense que tout va bien.
import time
import math
n=int(input())
start=time.time()
pi=math.pi
check=((10**n)-1)//3
ans=100
ans_list=[100,1]
for i in range(1,check+1):#C'est le dénominateur
for j in range(int((pi)*i),(10**n)):
frac=j/i
if abs(frac-pi)<abs(pi-ans):
ans=frac
ans_list=[j,i]
else:
if frac>ans:
break
print(ans)
print(ans_list)
end=time.time()
print(end-start)
C'est devenu si rapide que j'ai demandé p (8)
6
>>>3.141592653581078
>>>[833719, 265381]
7
>>>3.1415926535898153
>>>[5419351, 1725033]
8
>>>3.1415926535897927
>>>[80143857, 25510582]
Je sens que le mystère de nombreuses années a été résolu.
Recommended Posts