def test_prime(n):
q = True
for p in range(2,n): #Only need to check up to rootn for primes and n/2 for factors
if int(n%p) is 0:
q = False
print(p, 'and', int(n/p), 'are factors of ', n)
if q:
print(n, 'IS a prime number!')
else:
print(n, 'IS NOT a prime number')
私は Python をいじり始めたばかりで、時間をつぶすためにいくつかの断片をまとめています。私は素数のテストで遊んでいて、非素数の因数を示すという考えを持っていました。上記でまとめた関数は、一貫性のない出力が得られることを除いて、十分に機能しているようです。
たとえば、n = 65432 に設定すると...
2 and 32716 are factors of 65432
4 and 16358 are factors of 65432
8 and 8179 are factors of 65432
8179 and 8 are factors of 65432
16358 and 4 are factors of 65432
32716 and 2 are factors of 65432
65432 IS NOT a prime number
それは私が期待するものです。しかし、n = 659306 に設定すると...
2 and 329653 are factors of 659306
71 and 9286 are factors of 659306
142 and 4643 are factors of 659306
4643 and 142 are factors of 659306
9286 and 71 are factors of 659306
659306 IS NOT a prime number
最後に係数 329653 が含まれていないため、これは異なります。すべての要因がどこかに表示されるので、これは問題ではありませんが、いくつかの数値でなぜこれが起こるのか分からないのは私を悩ませています!
私が完全なバカではないことを示すために、これは長さが 5 文字を超える整数値でのみ発生するように思われることを突き止めました。これら2つのケースで出力が異なる理由を教えてください。