鱼C论坛

 找回密码
 立即注册
查看: 3159|回复: 19

[已解决]代码输出有误问题,求解决 谢谢

[复制链接]
发表于 2017-6-13 18:00:44 | 显示全部楼层 |阅读模式

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

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

x
  1. print('打印20以内的质数:',end='')
  2. print(2,end="  ")
  3. i=3
  4. j=range(2,i)
  5. while i<20:
  6.     for each in j:
  7.         if i % each ==0:
  8.             break
  9.         else:
  10.             print(i,end="  ")
  11.     i=i+1   
  12. # 为什么打印出来的是奇数 而不是质数呢?
复制代码
最佳答案
2017-6-13 19:50:58
本帖最后由 ooxx7788 于 2017-6-13 20:07 编辑

你 要把所有for跑完了,才能答应出i,否则就不对
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-6-13 18:17:00 | 显示全部楼层
你的each 一直是2
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-13 18:18:32 | 显示全部楼层
jswxsj 发表于 2017-6-13 18:17
你的each 一直是2

请问怎么修改呢 ?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-13 19:50:58 | 显示全部楼层    本楼为最佳答案   
本帖最后由 ooxx7788 于 2017-6-13 20:07 编辑

你 要把所有for跑完了,才能答应出i,否则就不对
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-13 21:56:03 | 显示全部楼层
我晕,看了一会,我也觉得无解,怎么回事
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-13 22:27:42 | 显示全部楼层
concrete 发表于 2017-6-13 21:56
我晕,看了一会,我也觉得无解,怎么回事
  1. i = 2
  2. while i < 20:
  3.     sign = 0
  4.     j=list(range(2, i))
  5.     for each in j:
  6.         if i % each == 0:
  7.             print(end="")
  8.             i = i + 1
  9.             sign = 1
  10.             break
  11.     if sign == 0:
  12.         print(i)
  13.         i = i + 1
  14. #网友提供的正确答案
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-13 22:30:42 | 显示全部楼层
你这代码改好了吗??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-13 23:22:25 | 显示全部楼层
concrete 发表于 2017-6-13 22:30
你这代码改好了吗??

不改了  没法改
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-14 07:30:49 | 显示全部楼层

还不明白吗?

看我个性签名 ,来群聊聊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-14 07:30:56 | 显示全部楼层
concrete 发表于 2017-6-13 22:30
你这代码改好了吗??

还不明白吗?

看我个性签名 ,来群聊聊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-14 09:01:45 | 显示全部楼层
本帖最后由 悠然随心 于 2017-6-14 14:41 编辑

这样写行不行?
  1. print('打印20以内的质数:')
  2. i=2
  3. while i<20:
  4.     fg=1
  5.     for each in range(2,i):
  6.         if i % each ==0:
  7.             fg=0
  8.             break
  9.     if fg == 1:
  10.         print(i)
  11.     i=i+1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-14 09:09:09 | 显示全部楼层
  1. import math

  2. for i in range(2,21):
  3.     flag = 1
  4.     for j in range(2,int(math.sqrt(i)+1)):
  5.         if i % j == 0:
  6.             flag = 0
  7.    
  8.     if flag == 1:
  9.         print(i)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-14 09:09:40 | 显示全部楼层
ooxx7788 发表于 2017-6-13 19:50
你 要把所有for跑完了,才能答应出i,否则就不对

你这个最佳给的6666
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-14 09:42:37 | 显示全部楼层
李金龙 发表于 2017-6-14 07:30
还不明白吗?

看我个性签名 ,来群聊聊

问题已经解决  谢谢!  我一直在这个群里面的哈
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-14 09:49:21 | 显示全部楼层
sunnychou 发表于 2017-6-14 09:09
你这个最佳给的6666

非常感谢  你的答案很棒!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-14 09:51:02 | 显示全部楼层

ok的!非常感谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-14 10:11:37 | 显示全部楼层
本帖最后由 悠然随心 于 2017-6-14 14:42 编辑

菜鸟学习中,受益匪浅。同样的问题,不同的代码,效率完全不一样,高手就是高手啊
一:
  1. import math

  2. for i in range(2,50001):
  3.     flag = 1
  4.     for j in range(2,int(math.sqrt(i)+1)):
  5.         if i % j == 0:
  6.             flag = 0
  7.    
  8.     if flag == 1:
  9.         print(i)
复制代码
运行时间:15秒

二:
  1. for i in range(2,50001):
  2.     fg=1
  3.     for each in range(2,i):
  4.         if i % each ==0:
  5.             fg=0

  6.     if fg == 1:
  7.         print(i)
复制代码
运行时间:4分58秒,加了break后还用了35秒。
我奇怪的是,第一段加了break也没多大变化,什么原因?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-14 18:09:37 | 显示全部楼层
悠然随心 发表于 2017-6-14 10:11
菜鸟学习中,受益匪浅。同样的问题,不同的代码,效率完全不一样,高手就是高手啊
一:运行时间:15秒

哥们  可以把你计算运行时间的方法和代码发来吗?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-15 14:37:57 | 显示全部楼层
阿☆輝 发表于 2017-6-14 18:09
哥们  可以把你计算运行时间的方法和代码发来吗?
  1. import time
  2. start = time.clock()

  3. 程序代码

  4. end = time.clock()
  5. print("运行时间: %.03f秒" %(end-start))
复制代码

运行时间: 13.868秒
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-15 21:43:03 | 显示全部楼层

O(∩_∩)O谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-2-28 00:29

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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