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

package math;

import java.math.BigDecimal;
import java.util.function.BiConsumer; public class TestEuler {
public static void main(String[] args) {
boolean flg=true; for(long x=1;flg;x++){
for(long y=1;flg&&(y<x);y++){
for(long z=1;flg&&(z<y);z++){
for(long w=1;true;w++){
int r=power4Long(w).compareTo(sum(power4Long(x),power4Long(y),power4Long(z)));
System.out.print(x+":"+power4Long(x).toString()+",");
System.out.print(y+":"+power4Long(y).toString()+",");
System.out.print(z+":"+power4Long(z).toString()+",");
System.out.println(w+":"+power4Long(w).toString()+";");
if(r==1){
break;
}
if(r==0){
flg=false;
break;
}
}
}
}
}
}
public static boolean checkEuler(long x,long y,long z,long w){
return power4Long(w).compareTo(sum(power4Long(x),power4Long(y),power4Long(z)))==0;
}
public static BigDecimal power4Long(Long b){
return power4(new BigDecimal(b));
} public static BigDecimal power4(BigDecimal b){
return b.multiply(b).multiply(b).multiply(b);
}
public static BigDecimal sum(BigDecimal... bs){
BigDecimal reB=new BigDecimal(0);
for(BigDecimal b:bs){
reB=reB.add(b);
}
return reB;
}
}

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

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

package math;

public class TestEuler2 {
public static void main(String[] args) {
long x=2682440L;
long y=15365639L;
long z=18796760L;
long w=20615673L;
System.err.println(x+"的四次方是"+TestEuler.power4Long(x).toString());
System.err.println(y+"的四次方是"+TestEuler.power4Long(y).toString());
System.err.println(z+"的四次方是"+TestEuler.power4Long(z).toString());
System.err.println(w+"的四次方是"+TestEuler.power4Long(w).toString());
System.out.println(TestEuler.checkEuler(x, y, z, w));
}
}

  此代码结果如下

2682440的四次方是51774995082902409832960000
15365639的四次方是55744561387133523724209779041
18796760的四次方是124833740909952854954805760000
20615673的四次方是180630077292169281088848499041
true

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

以下测试运行用时

package math;

import java.math.BigDecimal;
import java.util.function.BiConsumer; import org.jgroups.tests.perf.Data; /**
* @author zxl
* @jdk 1.8
* @Date 2016年10月13日上午10:04:24
*/
public class TestEuler {
public static void main(String[] args) {
long currTime=System.currentTimeMillis(); boolean flg=true; for(long x=1;flg&&(x<10L);x++){
for(long y=1;flg&&(y<x);y++){
for(long z=1;flg&&(z<y);z++){
for(long w=1;true;w++){
int r=power4Long(w).compareTo(sum(power4Long(x),power4Long(y),power4Long(z)));
System.out.print(x+":"+power4Long(x).toString()+",");
System.out.print(y+":"+power4Long(y).toString()+",");
System.out.print(z+":"+power4Long(z).toString()+",");
System.out.println(w+":"+power4Long(w).toString()+";");
if(r==1){
break;
}
if(r==0){
flg=false;
break;
}
}
}
}
}
System.out.println("用时共计:"+(System.currentTimeMillis()-currTime));
}
public static boolean checkEuler(long x,long y,long z,long w){
return power4Long(w).compareTo(sum(power4Long(x),power4Long(y),power4Long(z)))==0;
}
public static BigDecimal power4Long(Long b){
return power4(new BigDecimal(b));
} public static BigDecimal power4(BigDecimal b){
return b.multiply(b).multiply(b).multiply(b);
}
public static BigDecimal sum(BigDecimal... bs){
BigDecimal reB=new BigDecimal(0);
for(BigDecimal b:bs){
reB=reB.add(b);
}
return reB;
}
}

 该代码计算到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. 增量式PID推导及C语言实现

    PID控制器表达式为: \[ u(t) = K_pe(t) + K_i\int_0^t e(\tau)d\tau + K_d\frac{de(t)}{dt} \] 离散化: 令 $ t = nT,~T ...

  2. ES6学习笔记一

    块级作用域:在ES5中只有全局作用域与函数作用域,ES6中新增的块级作用域避免变量的覆盖与泄露.考虑到代码运行环境,在块级作用域中应避免声明函数,最好用函数表达式的方式声明. let与const:le ...

  3. POJ1753(位操作和枚举)

    题目:http://poj.org/problem?id=1753 题意:一块4*4的棋盘,黑白块不规律分布,翻动一个色块,其上下左右,都会被翻动,知道全黑全白为止.输出最小次数,达不到则输出“Imp ...

  4. OSI7层模型详解

    首先我们借用百度百科上的图片来基本了解一下OSI7层模型的名称以及结构.下面我将从最底层一层一层往上介绍. 物理层:基于Bit传输,是属于物理信道,最基本的机械.电子.定时接口通信信道. 数据链路层: ...

  5. 复习(1)【Maven】

    终于开始复习旧知识了,有输入必然要有输出.输入和输出之间的内化过程尤为重要,在复习的同时,真正把学到的东西积淀下来,加深理解. Maven项目概念与配置 Maven是一个项目管理和综合工具.Maven ...

  6. Oracle:试图访问正在使用的事务临时表

    处理步骤为 1.找到表ID select * from dba_objects where object_name like 'TPT_RPWORPA1_QRY' 2.通过表ID查找正在使用的事务 s ...

  7. TJpgDec使用说明

    TJpgDec模块应用说明 [TOC] 怎么使用 首先,你应该构建和运行如下所示示例程序.这是一个典型的使用TJpgDec模块,它有助于调试和缩小问题. 解码会话分为两个阶段.第一阶段是分析JPEG图 ...

  8. mysql的enum和set数据类型

    定义一个ENUM或者SET类型,可以约束存入的数值. ENUM中的值必须是定义过数值列中的一个,比如ENUM('a','b','c'),存入的只能是'a'或者'b'或者'c',如果存入'','d'或者 ...

  9. Bootstrap 中的 Typeahead 组件 -- AutoComplete

    Bootstrap 中的 Typeahead 组件就是通常所说的自动完成 AutoComplete,功能很强大,但是,使用上并不太方便.这里我们将介绍一下这个组件的使用. 第一,简单使用 首先,最简单 ...

  10. XP机器上WCF采用X509证书加密时IIS读取证书的授权

    XP机器上WCF采用X509证书加密时IIS读取证书的授权 XP下的授权命令为:winhttpcertcfg -g -c LOCAL_MACHINE\My -s 证书名称 -a "ASPNE ...