Project Euler 47
2012-11-28 20:43
197 查看
这道题是找n个连续的有n个不同质因数的最小的数……
直接暴力枚举~
不过这里面我想到一个方法,就是用一个数组,存取到i位置为止,总共多少个满足factors == 4
这样只要判断 f[i] - f[i-3] == 4 比上面的判断简单多了~不过这是小细节了~
不过上面的代码不一定正确……因为我想优化来着……不知道有没有改乱了……
另外一个代码是看网上人写的~似乎是优化……他写的自己用了2秒多点……
实测挺慢的~差不多速度……
直接暴力枚举~
def sss(n): a = [1 for i in range(n)] a[0], a[1], a[2] = 0, 0, 1 pl = [] t = s = 0 for i in range(2,n): if a[i]: s+=i pl.append(i) j=i*i t+=1 while j<n: a[j]=0 j+=i return pl def check(x, prime): count = 0 for i in prime: if x%i == 0: count += 1 while x%i == 0: x //= i if x <= 1: return count return count def main(): prime = sss(15000) factors = [0] for i in range(1, 150000): factors.append(check(i, prime)) for i in range(1,149995): if (factors[i] == 4) and (factors[i+1] == 4) and (factors[i+2] == 4) and (factors[i+3] == 4): print(i) if __name__ == '__main__': main()
不过这里面我想到一个方法,就是用一个数组,存取到i位置为止,总共多少个满足factors == 4
这样只要判断 f[i] - f[i-3] == 4 比上面的判断简单多了~不过这是小细节了~
不过上面的代码不一定正确……因为我想优化来着……不知道有没有改乱了……
另外一个代码是看网上人写的~似乎是优化……他写的自己用了2秒多点……
实测挺慢的~差不多速度……
import math def check(x): count = 0 res = [] if x%2 == 0: res.append(2) while x%2 ==0: x //= 2 limit = math.sqrt(x+1) i = 3 while i <= limit: if x % i == 0: res.append(i) x //= i limit = math.sqrt(x+i) else: i += 2 if x != 1: res.append(x) return len(set(res)) def main(): factors = [0] for i in range(1, 150000): factors.append(check(i)) for i in range(1,149995): if (factors[i] == 4) and (factors[i+1] == 4) and (factors[i+2] == 4) and (factors[i+3] == 4): print(i) if __name__ == '__main__': main()
相关文章推荐
- project euler 47
- Project Euler:Problem 47 Distinct primes factors
- project euler 47 Distinct primes factors
- Project Euler:Problem 47 Distinct primes factors
- 数学之美 系列十一 - Google 阿卡 47 的制造者阿米特.辛格博士
- Linux那些事儿之我是U盘(47)迷雾重重的Bulk传输(五)
- Windows API一日一练(47)CreateSemaphore和ReleaseSemaphore函数
- 再学 GDI+[47]: 路径 - CloseFigure
- Delphi 与 DirectX 之 DelphiX(47): TDIB.DoContrast();
- reactos操作系统实现(47)
- 条款47:请使用traits classes表现类型信息(2)
- web高性能开发系列随笔 BearRui(AK-47)版
- 稳扎稳打Silverlight(47) - 4.0UI之操作剪切板, 隐式样式, CompositeTransform, 拖放外部文件到程序中
- 稳扎稳打Silverlight(47) - 4.0UI之操作剪切板, 隐式样式, CompositeTransform, 拖放外部文件到程序中
- 稳扎稳打Silverlight(47) - 4.0UI之操作剪切板, 隐式样式, CompositeTransform, 拖放外部文件到程序中
- 稳扎稳打Silverlight(47) - 4.0UI之操作剪切板, 隐式样式, CompositeTransform, 拖放外部文件到程序中
- 稳扎稳打Silverlight(47) - 4.0UI之操作剪切板, 隐式样式, CompositeTransform, 拖放外部文件到程序中
- Flash/Flex学习笔记(47):反向运动学(上)
- Windows API一日一练(47)CreateSemaphore和ReleaseSemaphore函数
- [Project Euler]加入欧拉 Problem 14