首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >素数练习

素数练习
EN

Stack Overflow用户
提问于 2020-03-26 00:51:33
回答 1查看 66关注 0票数 0

我应该写一个python程序,用户在其中输入任何数字,它会告诉我这个数字是否可以写成等式后面4个连续素数的平方和,并给出这些数字:

代码语言:javascript
复制
(N1 * N1) + (N2 * N2) + (N3 * N3) + (N4 * N4) == N

但是我不能使用:列表、函数、中断、导入数学等。

现在,我的代码看起来像这样:

代码语言:javascript
复制
     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

EN

回答 1

Stack Overflow用户

发布于 2020-03-26 01:09:44

控制流的while条件使用示例:

代码语言:javascript
复制
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")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60853505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档