python - 素数练习
问题描述
我应该编写一个 python 程序,用户在其中键入任何数字,它会告诉我该数字是否可以写为等式后面的 4 个连续素数的平方和并给出这些数字:
(N1 * N1) + (N2 * N2) + (N3 * N3) + (N4 * N4) == N
但是我不能使用:列表、函数、中断、导入数学等。
现在我的代码如下所示:
N = int(input("Number: "))
import math
N1 = 2
N2 = 3
N3 = 5
N4 = 7
while True:
if (N1 * N1) + (N2 * N2) + (N3 * N3) + (N4 * N4) == N:
print(N1, N2, N3, N4)
break
X = N4 + 2
if X > N // 12:
print("false")
break
while True:
for A in range(3, int(math.sqrt(X) + 1), 2):
if X % A == 0:
primo = False
break
else:
primo = True
if primo:
N1 = N2
N2 = N3
N3 = N4
N4 = X
break
else:
X = X + 2
但我既不能使用也不能break
使用import math
。
解决方案
如何在控制流中使用 while 条件的示例:
N = int(input("Number: "))
n1,n2,n3,n4 = 2,3,5,7
while n1*n1 +n2*n2+n3*n3 +n4*n4 < N:
found_prime = False
t = n4
while not found_prime:
t = t+2
p = 3
found_prime = True
while p**2 <= t:
if t%p == 0:
found_prime = False
p+=2
#shift primes
n1,n2,n3,n4 = n2,n3,n4,t
if n1*n1 +n2*n2+n3*n3 +n4*n4 == N:
print(n1,n2,n3,n4, " == ", N)
else:
print("no 4 consecutive primes exists such that n1*n1 +n2*n2+n3*n3 +n4*n4 == N")
推荐阅读
- python - python语法错误比较运算符
- mysql - 根据从 MySql (windows) 检索的结果创建一个 cvs 文件
- python - ± 在 python 中的正则表达式中
- wso2 - WSO2 esb 作为具有故障转移传输超时的 jms 生产者
- c# - Listview C# - WPF 表单固定字母
- python - 如何在执行后自动关闭python动画
- r - 合并 2 个数据帧,其中一个数据帧中的值由逗号分隔
- r - 在 R 中对字符向量进行排序并删除分隔符
- java - 检查 List 中是否存在 String
- node.js - 节点 express 和 socket.io 中的 CORS 配置 No 'Access-Control-Allow-Origin'