我做好了 很多版本的 还用带到了 埃氏算法 ,后面发现2素数 。笑死
#先判断是 i是否为它的约数,再判断是否为质数
import math
def zhishu(i):
# 先确定i 时候为质数
t = True
j = 2
i=math.sqrt(i)
while j <= i:
if i % j == 0:
t = False
break
j += 1
return t
while True:
try:
n=int(input())
m=int(math.sqrt(n))+1
for i in range(2,m,1):
if n%i==0:
if zhishu(i) and zhishu(n//i):
a=i
b=n//i
c=(a>b and a or b)
print(c)
break
except:
break
下面 是个想办法 优化for里面的参数 等等
```python
import math
def zhishu(i):
# 先确定i 时候为质数
t = True
j = 2
i=math.sqrt(i)
while j <= i:
if i % j == 0:
t = False
break
j += 1
return t
def func(n):
m = int(n / 2) + 1
l=[]
for i in range(3,m,2):
if zhishu(i)==False:
continue
#此时i质数
if n%i==0:
a=int(n/i)
if zhishu(a) == False:
continue
l.append(i)
l.append(a)
if len(l)==2:break
return max(l)
while True:
try:
n=int(input())
print(func(n))
except:
break
埃氏算法
#埃式筛法
#求一个范围内的所有素数
def ertosthenes(n):
primes = []
is_prime = [True] * (n + 1)
for i in range(2, n + 1):
if is_prime[i]:
primes.append(i)
for j, p in enumerate(primes):
# 防止越界
if p > n // i:
break
# 过滤
is_prime[i * p] = False
# 当i % p等于0的时候说明p就是i最小的质因数
if i % p == 0:
break
return primes
for i in range(100,0):
print(i)
仔细审题 切记啊