python求质数的算法
‘壹’ 用python求1到100所有的质数
判断素数的 函数
再 用循环 遍历 输出 单个质数
‘贰’ Python求质数
如下:
importmath
defm(a,b):
ret=0
forxinrange(a,b+1):
foryinrange(2,int(math.sqrt(x))+1):
ifx%y==0:
break
else:
ret+=1
print(ret)
输入:m(3,7)
得到:3
‘叁’ 请问怎么用python函数求数字n最近的质数
fun函数有逻辑错误,改成:
##注意:最左边每个=表示一个空格
def fun(m):
====for i in range(2,m):
========if m%i==0:
============return False
====return True
‘肆’ python中如何编程求1到100之间的素数
#!/usr/bin/python
#-*- coding:UTF-8 -*-
#求素数
list=[]
i=2
for i in range (2,100):
j=2
for j in range(2,i):
if(i%j==0):
break
else:
list.append(i)
print(list)
(4)python求质数的算法扩展阅读:
python:for语句的使用方法
for循环的语法格式:
for i in range(n):#从数据类型中拿一个值赋值给i
print(i)#打印i
例如:
#for
for i in range (1,6,2):#从一开始到六之前每隔上2个数字
print(i)#结果为1,3,5
# ------------------------------------------------
s = ["man", "woman", "girl", "boy", "sister"]
for i in s:#列表s中的每个元素给i
print(i)
#-------------------------------------------------
for i in range(5):
print(i)#结果为:0,1,2,3,4
for循环实例:数字0,1,2组成一个百位数,并且数字不重复!
#for
for i in range(0,3):
for j in range(0,3):
for k in range(0,3):
if (i != 0) and (i != j) and (i != k) and (j != k):
print (i,j,k)
‘伍’ python如何算质数和
你好的!
importmath
defis_prime(n):#简化问题,先利用函数判断是否为质数
ifn==1:#=是赋值,==才是判断,切记切记
returnFalse
foriinrange(2,int(math.sqrt(n))+1):#质数判断条件,注意+1
ifn%i==0:
returnFalse
returnTrue
primes=[]
name=int(input())
foriinrange(1,name):#注意这个逗号,很容易写错!
ifis_prime(i)isTrue:#bool值用is判断
primes.append(i)
print('100以内的素数:{} 100以内素数和:{}'.format(primes,sum(primes)))
欢迎追加悬赏并采纳!
‘陆’ Python求100000以为的质数代码详解
定义变量k为0,这里没有用处,因为你下面每次遍历都重新赋值为0
定义一个列表,存储了第一个质数2,因为他是唯一一个偶数,所以单独存进去
遍历[3,100000)的所有整数,取出每一个数字之后,分别除以列表中的数字,如果某一个能被除尽,则代表它不是质数(根据任何合数都能被质数除尽的规则),break跳出里面的循环。
判断结果,如果是质数则加入列表,否则不做什么事情。
最后输出这个由质数组成的列表。
‘柒’ python中编程求1到100之间的素数有几种方法
六种。
方法一: 穷举法
方法二: 开方减"半"法
方法三:去除偶数法
方法四:使用列表法。
方法五:素数性质法
方法六: 埃拉托斯特尼筛法
拓展资料:Python由荷兰数学和计算机科学研究学会的Guido van Rossum 于1990 年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。Python解释器易于扩展,可以使用C或C++(或者其他可以通过C调用的语言)扩展新的功能和数据类型。Python 也可用于可定制化软件中的扩展程序语言。Python丰富的标准库,提供了适用于各个主要系统平台的源码或机器码。2021年10月,语言流行指数的编译器Tiobe将Python加冕为最受欢迎的编程语言,20年来首次将其置于Java、C和JavaScript之上
Python已经成为最受欢迎的程序设计语言之一。自从2004年以后,python的使用率呈线性增长。Python 2于2000年10月16日发布,稳定版本是Python 2.7。Python 3于2008年12月3日发布,不完全兼容Python 2。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。
由于Python语言的简洁性、易读性以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python来教授程序设计课程。例如卡耐基梅隆大学的编程基础、麻省理工学院的计算机科学及编程导论就使用Python语言讲授。众多开源的科学计算软件包都提供了Python的调用接口,例如着名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。而Python专用的科学计算扩展库就更多了,例如如下3个十分经典的科学计算扩展库:NumPy、SciPy和matplotlib,它们分别为Python提供了快速数组处理、数值运算以及绘图功能。因此Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。2018年3月,该语言作者在邮件列表上宣布Python 2.7将于2020年1月1日终止支持。用户如果想要在这个日期之后继续得到与Python 2.7有关的支持,则需要付费给商业供应商。
‘捌’ python求素数的个数
求素数本质上的算法还是:除了1和它本身之外的数都不能整除的数。
在网上看到了一种用一行就解决的代码:
" ".join("%s" % x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0])
对这段代码分解,最后一段列表生成式[y for y in range(2,x) if x%y == 0]这个就是核心算法y是从2到x-1的数,x只要能对y整除,配上前面的if not,就是,x不能被2到x-1的数整除,再看前面一段,x for x in range(2,100) 其实就是让x从2到100的取值。我们这假设题目就是求100内的素数。其实代码到这就得出结果了,只要在这些代码外面加上[]就是一个列表生成式了:
[x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0]]
那么为什么还加上了" ".join("%s" % 。。。)这段代码呢?其实只是格式化美观罢了,"%s" %是一种字符串格式化的语法, 基本用法是将值插入到%s占位符的字符串中,join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串。
下面是结果:
'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'
这样解析出来是个字符串还不能分割,所以我重新改了一下:
a = (" ".join("%s" % x for x in range(2,100) if not [y for y in range(2,x) if x%y == 0])).split()
list1 = []
for item in (a):
list1.append(int(item))
print(list1)
split()把字符串解析成列表,然后给列表每一项都转化成数字。
在数学里,我们还有种判断素数的简化方法:即y的取值范围是2到x的平方根+1
import math
(" ".join("%s" % x for x in range(2,100) if not [y for y in range(2, int(math.sqrt(x))+1) if x%y == 0])).split()
下面是一种正常的算法:
import math
num = []
i = 2
for i in range(2,100):
j = 2;
for j in range(2,int(math.sqrt(i)+1)):
if (i%j==0):
break;
else:
num.append(i)
print(num)
‘玖’ python求1~100之间的所有素数之和
解题思路:需要实现两个函数,一个是判断数字是否是素数;一个是求和函数。
实现函数,判断是否是素数,is_prime,具体代码如下:
def is_prime(num):
"""
判断是否是素数.
:param num:
:return:
"""
result = True
# 质数大于 1
if num > 1:
# 查看因子
for i in range(2, num):
if (num % i) == 0:
result = False
break
else:
result = True
# 如果输入的数字小于或等于 1,不是质数
else:
result = False
return result
实现函数,计算数字start到end之间的所有素数之和,sum,具体代码如下:
def sum(start, end):
"""
求闭区间[start, end]之间的素数之和.
:param start:
:param end:
:return: """
result = 0;
for i in range(start, end + 1):
if is_prime(i):
print(i)
result = result + i
return result
在main函数中调用求和,代码如下:
if __name__ == '__main__':
num = 8
print(is_prime(num))
num = 5
print(is_prime(num))
print(sum(1, 5))
完整 代码如下:
‘拾’ python算法:求100000以内间隔最大的一组质数的间隔。
来的有点晚了,正在写百万以内素数间隔,给你看一个MATLAB的算法作参考
希望有帮助
下面的内容是编写成m文件的,
然后运行
a=primes(2000000);
b=a(1:end-1);
c=a(2:end);
jg=c-b;
jgs=unique(jg);
cs=[];
for i=jgs
cs=[cs,sum(jg==i)];
end;
disp('间隔和间隔出现次数')
disp([jgs;cs])