Board logo

标题: [原创代码] 欧拉计划005-求最小同时都能被1-20整除的数 [打印本页]

作者: codegay    时间: 2016-4-13 14:18     标题: 欧拉计划005-求最小同时都能被1-20整除的数

本帖最后由 codegay 于 2016-4-13 15:18 编辑

欧拉计划005-求最小同时都能被1-20整除的数
  1. #=
  2. julia解欧拉计划005-求最小同时都能被1-20整除的数
  3. https://projecteuler.net/problem=5
  4. =#
  5. function ff1()
  6. #= -_-!! 无脑暴力
  7. 以下表达式使用这样一行python生成然后复制粘贴过来的:
  8. '&&'.join(["x%"+str(r)+"==0" for r in range(2,21)])
  9. =#
  10. 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;
  11.     for r in countfrom(2)
  12.         if f(r)
  13.             println(r)
  14.         break
  15.         end
  16.     end
  17. end
  18. @time ff1()
  19. #=
  20. 232792560
  21.   5.726657 seconds (232.85 M allocations: 3.472 GB, 2.59% gc time)
  22. [Finished in 9.6s]
  23. =#
复制代码

作者: codegay    时间: 2016-4-13 14:48

  1. #julia 一行流
  2. @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的一行流:
  1. *./>:i.20
复制代码
最短的是这样的。不明觉厉。
作者: codegay    时间: 2016-4-13 20:00

  1. """
  2. python
  3. """
  4. from itertools import count
  5. def ff1():
  6.     #无脑暴力
  7.     # ' and '.join(["x%"+str(r)+"==0" for r in range(2,21)])
  8.     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
  9. and x%8==0 and x%9==0 and x%10==0 and x%11==0 and x%12==0 and x%13==0
  10. 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)
  11.     for r in count(1):
  12.         if f(r):
  13.             print(r)
  14.             break
  15. ff1()
  16. """
  17. 232792560
  18. [Finished in 76.5s]
  19. """
复制代码

作者: 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整除的最小整数
  1. # Python 继续吹蜡烛O(∩_∩)O~
  2. N=int(input("请输入同时能被1-?整除:"))
  3. import math;pro=1;r=[1]*N
  4. for i in range(2,int(N**0.5)+1):
  5. if r[i-1]==0:
  6. continue
  7. else:
  8. for j in range(i,N//i+1):
  9. r[i*j-1]=0
  10. for i in range(2,N+1):
  11. if r[i-1]==1:
  12. pro=(i**int(math.log(N)/math.log(i)))*pro
  13. 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