aiffan. 发表于 2022-3-29 16:38:49

求求大佬们帮忙写一下这个代码吧,头要秃了

本帖最后由 aiffan. 于 2022-3-29 16:41 编辑

输入正整数n(2<=n< 1000 ),计算有多少对素数的和等于输入的这个正整数,并输出结果。
例如: input 10
输出对数结果为: 2对
两对素数分别为: (5, 5) (3.7)
用python帮忙写个代码吧{:5_92:}

大马强 发表于 2022-3-29 17:16:20

def sushu(num): # 判断素数
    if num == 2:
      return True
    else:
      for i in range(2, num):
            if not num % i:# 如果能整除 not 0 =1
                return False
      return True


res = []# 存放结果
count_head = []# 防重放
a = int(input("正整数n(2<=n< 1000):"))
for i in range(a):
    for j in range(a):
      if sushu(i) and sushu(j) and i + j == a:
            if j not in count_head:
                res.append((i, j))
                count_head.append(i)
if len(res):
    print(f"对数结果为: {len(res)}对")
    print(*res)

ba21 发表于 2022-3-29 17:48:07

# 求素数
def isPrimeNumber(n):
    k = int(n ** 0.5) # 求出n的平方根
    isPn = True
    for i in range(2, k+1):
      if n%i==0: # 不是素数
            isPn = False
            break

    return isPn

# 获取所有数素
def allPrimeNumber(n):
    primeNumber = []
    for i in range(2, n+1):
      if isPrimeNumber(i):
            primeNumber.append(i)
    return primeNumber


def test(n):
    primeNumbers = allPrimeNumber(n)
    sumlst = []
    for idx, v1 in enumerate(primeNumbers):
      for v2 in primeNumbers:
            if v1+v2==n:
                sumlst.append()
    return sumlst


n= int(input('请输入一个数n,2<=n<1000:'))

print(test(n))

傻眼貓咪 发表于 2022-3-29 18:37:00

本帖最后由 傻眼貓咪 于 2022-3-30 16:42 编辑

def isPrime(num):
    if num < 2: return False
    elif num == 2: return True
    for n in range(2, int(num**.5) + 1):
      if not num%n:
            return False
    return True
n = int(input())
res = [(num, n - num) for num in range((n >> 1) + 1) if isPrime(num) and isPrime(n - num)]
print(f"输出对数结果为: {len(res)} 对\n{len(res)} 对素数分别为:", *res)

leafu 发表于 2022-3-30 16:15:17

傻眼貓咪 发表于 2022-3-29 18:37


老哥,你这判断是不是质数的是什么原理?我看不懂。。。。

傻眼貓咪 发表于 2022-3-30 16:43:13

leafu 发表于 2022-3-30 16:15
老哥,你这判断是不是质数的是什么原理?我看不懂。。。。

感谢兄弟发现,我写错了,已修改。

leafu 发表于 2022-3-30 17:25:41

傻眼貓咪 发表于 2022-3-30 16:43
感谢兄弟发现,我写错了,已修改。

老哥,我主要是不理解你这个程序中对质数的判定方法,可以见解一下不?

傻眼貓咪 发表于 2022-3-30 17:32:14

leafu 发表于 2022-3-30 17:25
老哥,我主要是不理解你这个程序中对质数的判定方法,可以见解一下不?

def isPrime(num):
    if num < 2: return False # 当数字小于 2 返回假,最小质数是 2
    elif num == 2: return True # 当数字等于 2 返回真,2 是唯一偶数质数
    for n in range(2, int(num**.5) + 1): # 从 2 开始循环至 num 的平方根 + 1,诺有数字可以被 num 除整,表示这是 num 的因数,则返回假
      if not num%n:
            return False
    return True # 否则返回真

Stubborn 发表于 2022-4-2 17:05:28

本帖最后由 Stubborn 于 2022-4-2 17:27 编辑



def getPrime(n):
    primes = * n
    primes, primes = False, False
    for (i, prime) in enumerate(primes):
      if prime:
            for j in range(i * i, n, i): primes = False
    return

n = random.randint(0, 1000)
nn = n // 2
result = []
R = getPrime(n)
for each in R:
    if each > nn:
      break
    if (n - each) in R:
      result.append((each, n - each))

print(result)



页: [1]
查看完整版本: 求求大佬们帮忙写一下这个代码吧,头要秃了