标题: [原创代码] 欧拉计划005-求最小同时都能被1-20整除的数 [打印本页]
作者: codegay 时间: 2016-4-13 14:18 标题: 欧拉计划005-求最小同时都能被1-20整除的数
本帖最后由 codegay 于 2016-4-13 15:18 编辑
欧拉计划005-求最小同时都能被1-20整除的数- #=
- julia解欧拉计划005-求最小同时都能被1-20整除的数
- https://projecteuler.net/problem=5
- =#
-
- function ff1()
- #= -_-!! 无脑暴力
- 以下表达式使用这样一行python生成然后复制粘贴过来的:
- '&&'.join(["x%"+str(r)+"==0" for r in range(2,21)])
- =#
- f(x)=x%2==0&&x%3==0&&x%4==0&&x%5==0&&x%6==0&&x%7==0&&x%8==0&&x%9==0&&x%10==0&&x%11==0&&x%12==0&&x%13==0&&x%14==0&&x%15==0&&x%16==0&&x%17==0&&x%18==0&&x%19==0&&x%20==0;
- for r in countfrom(2)
- if f(r)
- println(r)
- break
- end
- end
- end
- @time ff1()
- #=
- 232792560
- 5.726657 seconds (232.85 M allocations: 3.472 GB, 2.59% gc time)
- [Finished in 9.6s]
- =#
复制代码
作者: codegay 时间: 2016-4-13 14:48
- #julia 一行流
- @time @show (2^4*3^2)*(*(primes(4,20)...))
复制代码
作者: happy886rr 时间: 2016-4-13 14:53
回复 2# codegay
强啊,julia也能一行流。只是julia的安装包太大,而且360报毒,我喜欢用自己精简的python解压版,只有2M大小,我把里边的多余库都干掉了。用批处理调试python。
作者: codegay 时间: 2016-4-13 15:09
回复 3# happy886rr
一样的都是算最小公倍数。python也可以的。只是需要手动把质数都列出来。
作者: codegay 时间: 2016-4-13 15:35
回复 3# happy886rr
你可以玩玩J语言http://www.jsoftware.com/download/j804/install/
还有lua之类的。
作者: codegay 时间: 2016-4-13 15:40
欧拉论坛里好多人贴出J的一行流:复制代码
最短的是这样的。不明觉厉。
作者: codegay 时间: 2016-4-13 20:00
- """
- python
- """
- from itertools import count
- def ff1():
- #无脑暴力
- # ' and '.join(["x%"+str(r)+"==0" for r in range(2,21)])
- f=(lambda x:x%2==0 and x%3==0 and x%4==0 and x%5==0 and x%6==0 and x%7==0
- and x%8==0 and x%9==0 and x%10==0 and x%11==0 and x%12==0 and x%13==0
- and x%14==0 and x%15==0 and x%16==0 and x%17==0 and x%18==0 and x%19==0 and x%20==0)
-
- for r in count(1):
- if f(r):
- print(r)
- break
- ff1()
- """
- 232792560
- [Finished in 76.5s]
- """
复制代码
作者: CrLf 时间: 2016-4-13 20:32
回复 6# codegay
这是什么语言……………已经看不懂你们在玩啥了
作者: codegay 时间: 2016-4-13 20:42
回复 8# CrLf
J语言
http://www.jsoftware.com/
作者: happy886rr 时间: 2016-4-13 22:12
本帖最后由 happy886rr 于 2016-4-13 22:24 编辑
回复 7# codegay
你的代码很强悍,来个吹蜡烛,随便输入个N,计算同时能被1-N整除的最小整数- # Python 继续吹蜡烛O(∩_∩)O~
- N=int(input("请输入同时能被1-?整除:"))
- import math;pro=1;r=[1]*N
- for i in range(2,int(N**0.5)+1):
- if r[i-1]==0:
- continue
- else:
- for j in range(i,N//i+1):
- r[i*j-1]=0
- for i in range(2,N+1):
- if r[i-1]==1:
- pro=(i**int(math.log(N)/math.log(i)))*pro
- print("顷刻即出:",int(pro))
复制代码
作者: codegay 时间: 2016-4-13 22:23
回复 10# happy886rr
不要用is 判断等值。
https://segmentfault.com/q/1010000000150947
作者: happy886rr 时间: 2016-4-13 22:30
回复 11# codegay
但是我的吹蜡烛原理就是把那个1当字符串的,类似布尔型,用1表示true,那个1只是用来标示素数的位置并不进行运算。
作者: codegay 时间: 2016-4-13 22:41
回复 12# happy886rr
但是还应该用==而不是is。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |