本文目录一览:
- 1、python输出200以内的最大素数
- 2、Python 素数
- 3、python语言 超级素数
- 4、如何用python计算小于100的最大素数
- 5、python中如何判断素数
- 6、python 找最大质数问题
python输出200以内的最大素数
# 输出200以内的最大素数
for n in range(199,100,-2):
for i in range(3,int(n**(1/2))+1,2):
if n % i == 0:
break
else:
print(f'200以内最大素数是{n}')
break
Python 素数
i = 2
while i = 100:
j = 2
while j = i / j: #难点1
if i % j == 0:
break #如果提前提出,j的值= i / j
j = j + 1
if j i / j: #难点2
print(i, end=' ')
i = i + 1
其实代码每一句都很简单,就不一一注释了,其实难的是思路。主要是两个地方对J变量的判断
A:while循环,一种常见的是j=sqrt(i),用这个数的开方(根号)来指定搜索上限,这是因为:
一个数若可以进行因数分解,那么分解时得到的两个数一定是一个小于等于sqrt(n),一个大于等于sqrt(n)——所以只要搜索到根号的地方就可以了,提高了速度。
用i/j的方式是sqrt的一种变种,j=sqrt(i),由于ij1,两边平方后不等式仍然成立
j^2=i 两边除以j就变成了j = i / j
B:第二处,根据j的数值来判断i是否是素数。当在循环中找到i % j == 0的情况,循环会提前退出,导致j i / j——说明不是素数;如果循环没有提前退出,说明i是素数,这时j的值 i / j
python语言 超级素数
# -*-coding:utf8-*-
#py3
import math
def Prime(n): #判断n是不是素数
if n==1:
return False
if n==2:
return True
t=int(math.sqrt(n)+1)
for i in range(2,t):
if n%i==0:
return False
return True
if __name__=='__main__':
s=0 #素数和
k=0 #个数
for i in range(100,10000):
t=i
while t1 and Prime(t):#t若是素数且大于1
t=int(t/10) #继续去掉低一位.直至t=0或t不是素数
if t==0: #该数是所求
print(i)#测试使用,仅供观察,可以去掉
s+=i #求和
k+=1 #计数器加1
print(s,k) #输出结果
结果:
如何用python计算小于100的最大素数
# -*- coding:utf-8 -*-
import math as ma #引入math,要用到开平方函数sqrt()
def prime(n): #判断整数n是不是素数
if n==1:
return 0
t=int(ma.sqrt(n)+1)
for i in range(2,t):
if n%i ==0:
return 0
return 1
for i in range(1,101):
if(prime(i)):
print(i,end=' ')#输出不换行
python中如何判断素数
素数的定义:所有比1大的整数中,只能被1或者它本身整除的数为素数
根据定义写出代码:
python 找最大质数问题
""" 题主的问题主要有三个:
1. max_prime中的i错写成了x,这是导致错误的原因
2. s=[]应放在函数max_prime中,这样才符合程序设计原则
3. 如果要求的是包含x在内的最大质数,max_prime函数中range应
写成range(2,x+1),此时i的取值范围才是2到x
此外,寻找最大质数时max_prime中遍历时应该从后往前遍历,此时遇到
的第一个质数就是所求最大质数,而不必从前遍历做无用功。
修改代码如下:
"""
def prime(x):
for i in range(2,x//2+1):
if x%i==0:
return False
return True
def max_prime(x):
for i in range(x,1,-1): # x+1以包含x本身
if prime(i):
return i
print(max_prime(1000))