这是从http://duodaa.com/blog/index.php/archives/538/截得图,以下是代码

  1. package math;
  2.  
  3. import java.math.BigDecimal;
  4. import java.util.function.BiConsumer;
  5.  
  6. public class TestEuler {
  7. public static void main(String[] args) {
  8. boolean flg=true;
  9.  
  10. for(long x=1;flg;x++){
  11. for(long y=1;flg&&(y<x);y++){
  12. for(long z=1;flg&&(z<y);z++){
  13. for(long w=1;true;w++){
  14. int r=power4Long(w).compareTo(sum(power4Long(x),power4Long(y),power4Long(z)));
  15. System.out.print(x+":"+power4Long(x).toString()+",");
  16. System.out.print(y+":"+power4Long(y).toString()+",");
  17. System.out.print(z+":"+power4Long(z).toString()+",");
  18. System.out.println(w+":"+power4Long(w).toString()+";");
  19. if(r==1){
  20. break;
  21. }
  22. if(r==0){
  23. flg=false;
  24. break;
  25. }
  26. }
  27. }
  28. }
  29. }
  30. }
  31. public static boolean checkEuler(long x,long y,long z,long w){
  32. return power4Long(w).compareTo(sum(power4Long(x),power4Long(y),power4Long(z)))==0;
  33. }
  34. public static BigDecimal power4Long(Long b){
  35. return power4(new BigDecimal(b));
  36. }
  37.  
  38. public static BigDecimal power4(BigDecimal b){
  39. return b.multiply(b).multiply(b).multiply(b);
  40. }
  41. public static BigDecimal sum(BigDecimal... bs){
  42. BigDecimal reB=new BigDecimal(0);
  43. for(BigDecimal b:bs){
  44. reB=reB.add(b);
  45. }
  46. return reB;
  47. }
  48. }

事实上这样的四层循环极大的消耗着计算机的性能计算很慢,要考我的这些代码来验证欧拉猜想估计得跑到我死都没结果

所以一下代码直接验证下结果

  1. package math;
  2.  
  3. public class TestEuler2 {
  4. public static void main(String[] args) {
  5. long x=2682440L;
  6. long y=15365639L;
  7. long z=18796760L;
  8. long w=20615673L;
  9. System.err.println(x+"的四次方是"+TestEuler.power4Long(x).toString());
  10. System.err.println(y+"的四次方是"+TestEuler.power4Long(y).toString());
  11. System.err.println(z+"的四次方是"+TestEuler.power4Long(z).toString());
  12. System.err.println(w+"的四次方是"+TestEuler.power4Long(w).toString());
  13. System.out.println(TestEuler.checkEuler(x, y, z, w));
  14. }
  15. }

  此代码结果如下

  1. 2682440的四次方是51774995082902409832960000
  2. 15365639的四次方是55744561387133523724209779041
  3. 18796760的四次方是124833740909952854954805760000
  4. 20615673的四次方是180630077292169281088848499041
  5. true

  有人证明这个方程式有无穷的解,真是让人惊叹数学的深邃伟大。

以下测试运行用时

  1. package math;
  2.  
  3. import java.math.BigDecimal;
  4. import java.util.function.BiConsumer;
  5.  
  6. import org.jgroups.tests.perf.Data;
  7.  
  8. /**
  9. * @author zxl
  10. * @jdk 1.8
  11. * @Date 2016年10月13日上午10:04:24
  12. */
  13. public class TestEuler {
  14. public static void main(String[] args) {
  15. long currTime=System.currentTimeMillis();
  16.  
  17. boolean flg=true;
  18.  
  19. for(long x=1;flg&&(x<10L);x++){
  20. for(long y=1;flg&&(y<x);y++){
  21. for(long z=1;flg&&(z<y);z++){
  22. for(long w=1;true;w++){
  23. int r=power4Long(w).compareTo(sum(power4Long(x),power4Long(y),power4Long(z)));
  24. System.out.print(x+":"+power4Long(x).toString()+",");
  25. System.out.print(y+":"+power4Long(y).toString()+",");
  26. System.out.print(z+":"+power4Long(z).toString()+",");
  27. System.out.println(w+":"+power4Long(w).toString()+";");
  28. if(r==1){
  29. break;
  30. }
  31. if(r==0){
  32. flg=false;
  33. break;
  34. }
  35. }
  36. }
  37. }
  38. }
  39. System.out.println("用时共计:"+(System.currentTimeMillis()-currTime));
  40. }
  41. public static boolean checkEuler(long x,long y,long z,long w){
  42. return power4Long(w).compareTo(sum(power4Long(x),power4Long(y),power4Long(z)))==0;
  43. }
  44. public static BigDecimal power4Long(Long b){
  45. return power4(new BigDecimal(b));
  46. }
  47.  
  48. public static BigDecimal power4(BigDecimal b){
  49. return b.multiply(b).multiply(b).multiply(b);
  50. }
  51. public static BigDecimal sum(BigDecimal... bs){
  52. BigDecimal reB=new BigDecimal(0);
  53. for(BigDecimal b:bs){
  54. reB=reB.add(b);
  55. }
  56. return reB;
  57. }
  58. }

 该代码计算到10用时163毫秒,因为w在小于x的时候等式恒不成立

for(long w=x;true;w++)

所以w从x开始循环有效的降低了运行时间大概达到原先的四分之一耗时。

Euler猜想的更多相关文章

  1. Project Euler 59: XOR decryption

    计算机上的每个字母都对应一个独特的编号,普遍接受的标准是ASCII(美国信息交换标准代码).例如,大写字母的A的ASCII码是65,星号(*)的ASCII码是42,而小写字母k的代码是107. 一种现 ...

  2. Python练习题 042:Project Euler 014:最长的考拉兹序列

    本题来自 Project Euler 第14题:https://projecteuler.net/problem=14 ''' Project Euler: Problem 14: Longest C ...

  3. [project euler] program 4

    上一次接触 project euler 还是2011年的事情,做了前三道题,后来被第四题卡住了,前面几题的代码也没有保留下来. 今天试着暴力破解了一下,代码如下: (我大概是第 172,719 个解出 ...

  4. The Euler function[HDU2824]

    The Euler functionTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)To ...

  5. hdu1282回文数猜想

    Problem Description 一个正整数,如果从左向右读(称之为正序数)和从右向左读(称之为倒序数)是一样的,这样的数就叫回文数.任取一个正整数,如果不是回文数,将该数与他的倒序数相加,若其 ...

  6. Euler Tour Tree与dynamic connectivity

    Euler Tour Tree最大的优点就是可以方便的维护子树信息,这点LCT是做不到的.为什么要维护子树信息呢..?我们可以用来做fully dynamic connectivity(online) ...

  7. 深入JavaScript:词法分析、连续赋值猜想

    JavaScript:词法分析.连续赋值猜想 原创文章,转摘请注明出处:苏福:http://www.cnblogs.com/susufufu/p/5851642.html 深夜发文,先吐槽下博客园的编 ...

  8. 害死人不偿命的(3n+1)猜想

    卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n+1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在1950年的世界数 ...

  9. 继续(3n+1)猜想

    卡拉兹(Callatz)猜想已经在1001中给出了描述.在这个题目里,情况稍微有些复杂. 当我们验证卡拉兹猜想的时候,为了避免重复计算,可以记录下递推过程中遇到的每一个数.例如对n=3进行验证的时候, ...

随机推荐

  1. JSTL标签库(一)核心标签库

    核心标签库(core) 1.表达式操作 2.流程控制 3.迭代操作 4.URL操作 1.表达式操作 标签 语法 功能 说明 <c:out> <c:out value="&l ...

  2. C#操作mysql数据库

    转  http://www.jb51.net/article/43486.htm using System;using System.Configuration;using MySql.Data.My ...

  3. Android 系统工具类SystemUtils

    包含的功能有: 获取系统中所有APP应用.获取用户安装的APP应用.根据包名和Activity启动类查询应用信息.跳转到WIFI设置.WIFI网络开关.移动网络开关.GPS开关 当前若关则打开 当前若 ...

  4. Authorization in Cloud Applications using AD Groups

    If you're a developer of a SaaS application that allows business users to create and share content – ...

  5. springmvc结合ajax实现跨域上传文件

    本方法的思路是:先在前端利用FileReader将图片转换成base64编码,然后将编码字符串形式传递到后台(前提是服务端设置了允许跨域),后端再把base64编码转换成图片. 前端代码: <! ...

  6. iOS Universal Links(通用链接)

    公司的运维,发现最近大量的请求 /.well-known/apple-app-site-association这个文件,造成了大量的404,可是这是谁请求的呢? 其实是苹果从iOS9.3开始更改了通用 ...

  7. sql 数据库结构导出到文件

    SELECT 表名 = Case When A.colorder= Then D.name Else '' End, 表说明 = Case When A.colorder= Then isnull(F ...

  8. 创建/发布cocoapods公共库

    对于大多数iOS开发者而言,cocoapods都是一个非常便捷的第三方库引导工具,该工具可以帮助我们快速导入所需第三方库,并且进行相关配置. 本文即为描述如何发布一个第三方库,提供给所有的开发者使用. ...

  9. Vs2012 创建项目失败 未找到与约束ContractName

    刚开始使用vs2012的时候,创建项目失败,后来找到原因 ,是KB2840642V2的原因,于是 卸载之.vs正常

  10. Python 下载网络mp4视频资源

    最近着迷化学, 特别是古代的冶炼技术,感叹古人的聪明. 春秋时期的炼铁方法是块炼铁,即在较低的冶炼温度下,将铁矿石固态还原获得海绵铁,再经锻打成的铁块.冶炼块炼铁,一般采用地炉.平地筑炉和竖炉3种.铁 ...