鱼C论坛

 找回密码
 立即注册
查看: 3042|回复: 3

[已解决]写一段打印1到n之间所有素数的程序

[复制链接]
发表于 2019-10-12 23:33:42 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 zmLau0727 于 2019-10-12 23:35 编辑

打印1到n之间的所有素数

描述

1.首先定义一个函数名为isprime, 它有一个形参a_integer; 如果a_integer是素数,则函数返回True;否则返回False。

2. 通过input()输入一个正整数n, 然后借助isprime,打印出1到n之间的所有素数,包括n。(如果n是素数,n也应当被打印出来。)


输入格式

输入使用input(),不要增加额外的提示信息


输出格式

每个素数向左对齐,宽度为5,素数之间用空格隔开,每10个素数为一行 。

比如下面的语句,使用format就可以将 i 按照向左对齐,宽度为5的格式输出。

print("{0:<5d}".format(i))
最佳答案
2019-10-13 12:46:36
本帖最后由 jackz007 于 2019-10-13 16:56 编辑
  1. import math

  2. def isprime(n):              # 这个函数用于判断输入参数 n 是否是质数,True - 代表是,False - 代表否
  3.     ret = False              # 先假定返回值为 False ,就是不是质数
  4.     if(n > 1):               # 质数从 2 开始,如果 n 比 1 大才进行判断
  5.         ret = True           # 先假定 n 是质数
  6.         for k in range(2 , int(math . sqrt(n) + 1)):  # 在 2 ~ n 平方根的数值范围内通过 k 枚举每一个整数
  7.             if not (n % k):  # 如果 n 被其中任何一个 k 整除了
  8.                 ret = False  # 置质数标志为 False,意思就是不是质数
  9.                 break        # 既然已经不是质数了,就没必要继续循环判断了(源代码缺少了这一句)
  10.     return ret               # 反馈整个函数对输入参数 n 判断的最终结果
  11. c = 0                        # 主程序从这里开始,质数计数器置 0
  12. n = 800                      # 设定 n 值为 800
  13. for m in range(1 , n):       # 在 1 ~ 799 的范围内,通过变量 m 枚举每一个整数
  14.     if(isprime(m)) :         # 如果 m 是质数
  15.         if not (c % 10) :    # 如果质数计数值为 0 或 10 的整数倍
  16.             if(c):           # 如果质数计数值为 10 的整数倍
  17.                 print(s)     # 打印出字符串 s
  18.             s = ''           # 初始化字符串 s 为空串
  19.         s += '%-5d' % m      # 按左对齐5个字符域宽来输出数字m,不过是顺序添加到字符串 s 中
  20.         c += 1               # 质数计数器加 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-10-13 12:46:36 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2019-10-13 16:56 编辑
  1. import math

  2. def isprime(n):              # 这个函数用于判断输入参数 n 是否是质数,True - 代表是,False - 代表否
  3.     ret = False              # 先假定返回值为 False ,就是不是质数
  4.     if(n > 1):               # 质数从 2 开始,如果 n 比 1 大才进行判断
  5.         ret = True           # 先假定 n 是质数
  6.         for k in range(2 , int(math . sqrt(n) + 1)):  # 在 2 ~ n 平方根的数值范围内通过 k 枚举每一个整数
  7.             if not (n % k):  # 如果 n 被其中任何一个 k 整除了
  8.                 ret = False  # 置质数标志为 False,意思就是不是质数
  9.                 break        # 既然已经不是质数了,就没必要继续循环判断了(源代码缺少了这一句)
  10.     return ret               # 反馈整个函数对输入参数 n 判断的最终结果
  11. c = 0                        # 主程序从这里开始,质数计数器置 0
  12. n = 800                      # 设定 n 值为 800
  13. for m in range(1 , n):       # 在 1 ~ 799 的范围内,通过变量 m 枚举每一个整数
  14.     if(isprime(m)) :         # 如果 m 是质数
  15.         if not (c % 10) :    # 如果质数计数值为 0 或 10 的整数倍
  16.             if(c):           # 如果质数计数值为 10 的整数倍
  17.                 print(s)     # 打印出字符串 s
  18.             s = ''           # 初始化字符串 s 为空串
  19.         s += '%-5d' % m      # 按左对齐5个字符域宽来输出数字m,不过是顺序添加到字符串 s 中
  20.         c += 1               # 质数计数器加 1
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-10-13 16:31:10 | 显示全部楼层

能注释一下每一行吗?萌新,看不太懂
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-10-13 16:53:40 | 显示全部楼层
zmLau0727 发表于 2019-10-13 16:31
能注释一下每一行吗?萌新,看不太懂

      已经注释过了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-26 07:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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