返回列表 发帖

[原创代码] 欧拉计划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]
=#COPY
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

#julia 一行流
@time @show (2^4*3^2)*(*(primes(4,20)...))COPY
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 2# codegay
强啊,julia也能一行流。只是julia的安装包太大,而且360报毒,我喜欢用自己精简的python解压版,只有2M大小,我把里边的多余库都干掉了。用批处理调试python。

TOP

回复 3# happy886rr


    一样的都是算最小公倍数。python也可以的。只是需要手动把质数都列出来。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 3# happy886rr


   
你可以玩玩J语言http://www.jsoftware.com/download/j804/install/

还有lua之类的。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

欧拉论坛里好多人贴出J的一行流:
*./>:i.20COPY
最短的是这样的。不明觉厉。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

"""
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]
"""COPY
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 6# codegay


    这是什么语言……………已经看不懂你们在玩啥了

TOP

回复 8# CrLf


    J语言
http://www.jsoftware.com/
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

本帖最后由 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))COPY

TOP

回复 10# happy886rr


  不要用is 判断等值。
https://segmentfault.com/q/1010000000150947
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

回复 11# codegay
但是我的吹蜡烛原理就是把那个1当字符串的,类似布尔型,用1表示true,那个1只是用来标示素数的位置并不进行运算。

TOP

回复 12# happy886rr


    但是还应该用==而不是is。
去学去写去用才有进步。安装python3代码存为xx.py 双击运行或右键用IDLE打开按F5运行

TOP

返回列表