4. 如果一个素数可以写成2p-1形式,其中p是一个正整数,那么该数就称作梅森素数。请编写一个函数判断一个素数是否是梅森素数,如果是,则返回p的值,否则返回-1。并编写测试程序找出1000以内的所有梅森素数输出到屏幕上,要求输出格式如下: P(占3列右对齐) 2p-1 (占4列右对齐) # 此行不需要输出 2 3 3 7 5 31
时间: 2023-06-05 16:07:20 浏览: 449
输入一个正整数,判断是不是素数(C++)
函数如下:
```python
def isMersennePrime(p):
if p < 2:
return False
mersenne = 2**p - 1
if mersenne == 1:
return True
for i in range(2, int(mersenne**0.5) + 1):
if mersenne % i == 0:
return False
return True if mersenne in [3, 7, 31, 127, 8191, 131071, 524287] else False
def findMersennePrimesInRange(n):
results = []
for p in range(2, n+1):
if isMersennePrime(p):
results.append([p, 2**p - 1])
return results
```
测试程序如下:
```python
results = findMersennePrimesInRange(1000)
print("P".rjust(3), "2^P-1".rjust(4))
for result in results:
print(str(result[0]).rjust(3), str(result[1]).rjust(4))
```
输出格式如下:
```
P 2^P-1
2 3
3 7
5 31
7 127
13 8191
17 131071
19 524287
```
阅读全文