本帖最后由 超神奇葩天才 于 2023-12-25 21:01 编辑
import math
import math
global n
global factor
factor = []
n = int(input())
#n = 600851475143
def _factor():
global n
n = int(n)
for i in range(2,math.isqrt(n)+3):
if n % i == 0:
n /= i
factor.append(i)
_factor()
elif n <= i:
break
_factor()
print(factor[-1])
这个思路怎么样
直接枚举,
这题因为因数数量多,欧拉筛效率反而不如穷举
ulong test3(ulong n)
{
ulong res=2;
while(res*res<n)
{
if(n%res)
{
res++;
continue;
}
n/=res;
}
return std::max(res,n);
}
test
原来全部是数学问题的编程解法
真不错
学习
学习
本帖最后由 xiaot1014 于 2024-5-21 16:33 编辑
if __name__ == '__main__':
goal = 600851475143
i = 2
while goal > i:
if not goal % i:
goal /= i
else:
i += 1
print(int(goal))
回复
?
111
6
求111
import math
n = 600851475143
t = 0
def is_prime(n):
for i in range(2, math.isqrt(n) + 1):
if n % i == 0:
return False
return True
for i in range(math.isqrt(n) + 1, 1, -1):
if n % i == 0 and is_prime(i):
t = i
break
print(t)
正想知道
def is_prime(num):
for i in range(2,int(pow(num,0.5))):
if num%i==0:
return False
else:
return True
for i in range(600851475143,1,-1):
if is_prime(i):
print(i)
break