1.1 計算質數(判斷輸入)
首先我們要明確質數(素數)的含義:
所謂質數(素數),是它的因數只有1與它本身,例如2。
所以我們可以這樣判斷一個數是否為質數:
# -*- coding: UTF-8 -*-
# 用戶輸入數字
num = int(input("請輸入一個數字: "))
# 質數大于 1
if num > 1:
# 查看因子
for i in range(2,num):
if (num % i) == 0:
print(num,"不是質數")
print(i,"乘",num//i,"是",num)
break
else:
print(num,"是質數")
# 如果輸入的數字小于或等于 1,不是質數
else:
print(num,"不是質數")
這樣子是不是很簡單?
1.2 計算質數(質數表之print)
那么有可能有人要問了:我要做質數表怎么辦呢?
其實就是上面的程序在加一個for循環就好了:
# -*- coding: UTF-8 -*-
def prime(num):
for i in range(2,num):
if (num % i) == 0:
break
else:
print(num,"是質數")
for i in range(2,100002):
prime(i)
input()
1.3 計算質數(質數表之寫入文件)
為了便于以后查看,我們把它寫入到文件中:
# -*- coding: UTF-8 -*-
def prime(num):
a = open('prime.txt','a')
for i in range(2,num):
if (num % i) == 0:
break
else:
print(num,"是質數")
a.write(str(num)+"是質數"+'\n')
for i in range(2,100002):
prime(i)
input()
2.1 計算完全數(完全數表之寫入文件)
所謂完全數,就是一個數的因子之和(不包括它本身)等于它,例如6。
要用Python計算完全數,還要了解梅森素數。即

如果這個數為素數,則稱之為 “梅森素數”)。
這是一個梅森素數列表:
lst = [2,3,5,7,13,17,19,31,61,89,107,127,521,607,1279,2203,2281,3217,4253,4423,9689,9941,11213,19937,21701,23209,44497,86243,110503,132049,216091,756839,859433,1257787,1398269,2976221,3021377,6972593,13466917,20996011,24036583,25964951,30402457,32582657,37156667,42643801,43112609,57885161,74207281,77232917,82589933]
完全數公式:

其中

為梅森素數。
尋找完全數程序:
import time
c = 0
lst = [2,3,5,7,13,17,19,31,61,89,107,127,521,607,1279,2203,2281,3217,4253,4423,9689,9941,11213,19937,21701,23209,44497,86243,110503,132049,216091,756839,859433,1257787,1398269,2976221,3021377,6972593,13466917,20996011,24036583,25964951,30402457,32582657,37156667,42643801,43112609,57885161,74207281,77232917,82589933]
xx = open('perfect.docx','w')
time_start=time.time()
for i in lst:
c += 1
a = (2**(i-1))*(2**i-1)
xx.write(str(c)+':'+str(a)+'\n')
time_end=time.time()
print(str(c)+' complete numbers have been calculated, it takes %s seconds.'%str(time_end-time_start)+'This m is '+str(i)+',it has '+str(len(str(a)))+' digits.')
input()
結束語
到此這篇關于利用Python計算質數與完全數的文章就介紹到這了,更多相關Python計算質數與完全數內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:- 使用Python判斷質數(素數)的簡單方法講解
- python求質數的3種方法
- python實現挑選出來100以內的質數
- Python 判斷是否為質數或素數的實例
- Python編程求質數實例代碼
- python輸出100以內的質數與合數實例代碼
- Python 2種方法求某個范圍內的所有素數(質數)
- 解決Python中回文數和質數的問題
- python求質數列表的例子
- python中判斷數字是否為質數的實例講解