鱼C论坛

 找回密码
 立即注册
查看: 746|回复: 4

python 分辨质数问题

[复制链接]
发表于 2019-1-18 14:07:15 | 显示全部楼层 |阅读模式

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

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

x
  1. import math
  2. def iscom(num):
  3.     x = int(math.sqrt(num))
  4.     for i in range(1,x+1):
  5.         if num % i != 0:
  6.             continue
  7.         else:
  8.             return  False
  9.     return True

  10. def main(num):
  11.     n = 1
  12.     while 1:
  13.         if not(iscom(num)):
  14.             print('%s不是质数'% num)
  15.             break
  16.         n += 1
  17.         num = (3 * 10 ** n) + num
  18. if __name__== '__main__':
  19.     main(31)
  20. # 这个代码有啥逻辑问题吗咋求不来啊










复制代码
2.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-1-18 14:10:52 | 显示全部楼层
你已经重复发了,刚才的已经回复
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-18 14:25:13 | 显示全部楼层
本帖最后由 sunrise085 于 2019-1-18 14:31 编辑

哈哈,果然被我猜中了。在那个帖子中已经回答你了。这个是每日一题的220题


程序有两个问题:
第一个,判断是否为质数,循环从2开始,而不是从1开始;
第二个问题,应该是在原数字之前添加数组的最高位,而不是添加3.

我在你的程序基础上帮你修改了一下。
  1. import math
  2. def iscom(num):
  3.     x = int(math.sqrt(num))
  4.     for i in range(2,x+1):
  5.         if num % i != 0:
  6.             continue
  7.         else:
  8.             return  False
  9.     return True

  10. def main(num):
  11.     n = 1
  12.     s=str(num)[0]#取num的最高位
  13.     while 1:
  14.         if not(iscom(num)):
  15.             print('%d不是质数'% num)
  16.             break
  17.         n += 1
  18.         num=int(s+str(num))#num最高位前添加一位
  19. if __name__== '__main__':
  20.     main(31)
复制代码


下面是我的程序,相互交流~~

  1. def prime(num):
  2.         flag=True
  3.         for j in range(2,int(num**0.5)+1):
  4.                 if num%j == 0:
  5.                         flag=False
  6.                         break
  7.         if flag:
  8.                 print("%d是质数" %num)
  9.         else:
  10.                 print("%d不是质数" %num)
  11.         return flag

  12. num=int(input("请输入一个两位整数:"))
  13. s=str(num)[0]
  14. while True:
  15.         flag=prime(num)
  16.         if flag:
  17.                 num=int(s+str(num))
  18.         else:
  19.                 break
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-1-18 14:38:08 | 显示全部楼层
sunrise085 发表于 2019-1-18 14:25
哈哈,果然被我猜中了。在那个帖子中已经回答你了。这个是每日一题的220题

加微信好吗?977735103 多谢指教
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-18 14:39:40 | 显示全部楼层
刘超峰 发表于 2019-1-18 14:38
加微信好吗?977735103 多谢指教

有什么问题还是在论坛交流吧~~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-13 11:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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