鱼C论坛

 找回密码
 立即注册
查看: 2414|回复: 8

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

[复制链接]
发表于 2022-3-29 16:38:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

输入正整数n(2<=n< 1000 ),计算有多少对素数的和等于输入的这个正整数,并输出结果。
例如: input 10
输出对数结果为: 2对
两对素数分别为: (5, 5) (3.7)
用python帮忙写个代码吧
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2022-3-29 17:16:20 | 显示全部楼层
  1. def sushu(num): # 判断素数
  2.     if num == 2:
  3.         return True
  4.     else:
  5.         for i in range(2, num):
  6.             if not num % i:  # 如果能整除 not 0 =1
  7.                 return False
  8.         return True


  9. res = []  # 存放结果
  10. count_head = []  # 防重放
  11. a = int(input("正整数n(2<=n< 1000):"))
  12. for i in range(a):
  13.     for j in range(a):
  14.         if sushu(i) and sushu(j) and i + j == a:
  15.             if j not in count_head:
  16.                 res.append((i, j))
  17.                 count_head.append(i)
  18. if len(res):
  19.     print(f"对数结果为: {len(res)}对")
  20.     print(*res)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-3-29 17:48:07 | 显示全部楼层
  1. # 求素数
  2. def isPrimeNumber(n):
  3.     k = int(n ** 0.5) # 求出n的平方根
  4.     isPn = True
  5.     for i in range(2, k+1):
  6.         if n%i==0: # 不是素数
  7.             isPn = False
  8.             break

  9.     return isPn

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


  17. def test(n):
  18.     primeNumbers = allPrimeNumber(n)
  19.     sumlst = []
  20.     for idx, v1 in enumerate(primeNumbers):
  21.         for v2 in primeNumbers[idx:]:
  22.             if v1+v2==n:
  23.                 sumlst.append([v1, v2])
  24.     return sumlst


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

  26. print(test(n))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-29 18:37:00 | 显示全部楼层
本帖最后由 傻眼貓咪 于 2022-3-30 16:42 编辑

  1. def isPrime(num):
  2.     if num < 2: return False
  3.     elif num == 2: return True
  4.     for n in range(2, int(num**.5) + 1):
  5.         if not num%n:
  6.             return False
  7.     return True
  8. n = int(input())
  9. res = [(num, n - num) for num in range((n >> 1) + 1) if isPrime(num) and isPrime(n - num)]
  10. print(f"输出对数结果为: {len(res)} 对\n{len(res)} 对素数分别为:", *res)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2022-3-30 16:15:17 | 显示全部楼层

老哥,你这判断是不是质数的是什么原理?我看不懂。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-30 16:43:13 From FishC Mobile | 显示全部楼层
leafu 发表于 2022-3-30 16:15
老哥,你这判断是不是质数的是什么原理?我看不懂。。。。

感谢兄弟发现,我写错了,已修改。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-3-30 17:25:41 | 显示全部楼层
傻眼貓咪 发表于 2022-3-30 16:43
感谢兄弟发现,我写错了,已修改。

老哥,我主要是不理解你这个程序中对质数的判定方法,可以见解一下不?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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


  1. def isPrime(num):
  2.     if num < 2: return False # 当数字小于 2 返回假,最小质数是 2
  3.     elif num == 2: return True # 当数字等于 2 返回真,2 是唯一偶数质数
  4.     for n in range(2, int(num**.5) + 1): # 从 2 开始循环至 num 的平方根 + 1,诺有数字可以被 num 除整,表示这是 num 的因数,则返回假
  5.         if not num%n:
  6.             return False
  7.     return True # 否则返回真
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-4-2 17:05:28 | 显示全部楼层
本帖最后由 Stubborn 于 2022-4-2 17:27 编辑


  1. def getPrime(n):
  2.     primes = [True] * n
  3.     primes[0], primes[1] = False, False
  4.     for (i, prime) in enumerate(primes):
  5.         if prime:
  6.             for j in range(i * i, n, i): primes[j] = False
  7.     return [k for (k, trueprime) in enumerate(primes) if trueprime]

  8. n = random.randint(0, 1000)
  9. nn = n // 2
  10. result = []
  11. R = getPrime(n)
  12. for each in R:
  13.     if each > nn:
  14.         break
  15.     if (n - each) in R:
  16.         result.append((each, n - each))

  17. print(result)



复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-29 08:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表