求大神解答
用python编写一个函数,打印200以内的所有素数,以空格分隔每行输出10个数。运行示例(程序运行1次的示例):2357111317192329313741434753...
用python编写一个函数,打印200以内的所有素数,以空格分隔每行输出10个数。
运行示例(程序运行1次的示例):
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109113 127 131 137 139 149 151 157 163 167 173179 181 191 193 197 199 展开
运行示例(程序运行1次的示例):
2 3 5 7 11 13 17 19 23 29
31 37 41 43 47 53 59 61 67 71
73 79 83 89 97 101 103 107 109113 127 131 137 139 149 151 157 163 167 173179 181 191 193 197 199 展开
展开全部
这里使用一个技巧。平常的思维是:从 2~200,每遇到一个数,依次看有没有哪个数可以将其整除,但是这样做效率很低,所以这里使用另一个方法:首先用循环,将 2~200 以内的所有非素数计算出来,因为非素数必然可以表示为两个整数的乘积,所以直接循环进行乘积即可,代码如下:
a = [0 for i in range(200)] # 初始化一个 200 以内的数组,存放是否是素数的标记
for i in range(2,100):
for j in range(2,100):
if i*j < 200:
a[i*j] = 1 # 是素数,标记为 1,否则标记为 0
lineno = 0
for i in range(2,200):
if a[i] < 1: # 如果标记为0,则输出
print(i, end=" ") # end=" " 表示不换行
lineno = lineno + 1
if lineno % 10 == 0:
print() # 换行
a = [0 for i in range(200)] # 初始化一个 200 以内的数组,存放是否是素数的标记
for i in range(2,100):
for j in range(2,100):
if i*j < 200:
a[i*j] = 1 # 是素数,标记为 1,否则标记为 0
lineno = 0
for i in range(2,200):
if a[i] < 1: # 如果标记为0,则输出
print(i, end=" ") # end=" " 表示不换行
lineno = lineno + 1
if lineno % 10 == 0:
print() # 换行
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
亚远景信息科技
2024-12-11 广告
2024-12-11 广告
ASPICE,全称Automotive SPICE,中文译为汽车软件过程改进及能力评定,是评估和改进汽车软件开发流程的国际标准。它旨在提高软件开发的质量和效率,确保软件符合质量要求及安全、法规标准。ASPICE基于过程能力和过程改进两大核心...
点击进入详情页
本回答由亚远景信息科技提供
展开全部
请问要什么语言?
追问
用pathon,感谢
用python,感谢
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询