
Java
打开秋天的内核
自学者
展开
-
2020-10-16
Java解数独效率提升方法参考:深度搜索(递归)虽说Java的运算速度确实快,但追求算法和提速是永恒的主题。不满来自以下情况:0 0 0 0 0 2 0 5 0 0 7 8 0 0 0 3 0 0 0 0 0 0 0 4 0 0 0 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 3 0 7 0 8 2 0 0 0 0 0 0 4 0 0 0 0 0 0 5 0 9 0 0 1 0 0 7 0 0 0 0 3 9 6 7 1 2 8 5 4原创 2020-10-16 21:00:25 · 144 阅读 · 1 评论 -
2020-10-13
深度搜索(递归)采用Java解数独还是第一次。由于Java的运算数独较Python快很多,在算法上就没有那么多讲究了。验证了几个高难度数独,都是秒解。解题的思路采用深度搜索递归的方式进行。package good;public class SDK { static int[][] arr1={{8, 0, 0, 0, 0, 0, 0, 0, 0}, {0, 0, 3, 6, 0, 0, 0, 0, 0}, {0, 7,原创 2020-10-13 21:07:03 · 130 阅读 · 2 评论 -
2020-10-11
找到多少个梅森素数就能找到多少个完全数(向前辈致敬)所谓梅森数,是指形如2p^pp-1的一类数,其中指数p是素数。如果梅森数是素数,就称为梅森素数。在梅森数的基础上,形如2n−1^{n-1}n−1(2p^pp-1)的一类数就是完全数。目前为止,已经找到51个梅森数,p最小为2,最大为82589933,根据p值,可以统计这些梅森数和完全数。考虑到梅森数是上千万位数,计算工作量很大,运算速度要有保障,采用Java编程,导入java.math.BigInteger进行精度计算。package good;原创 2020-10-11 23:36:14 · 434 阅读 · 0 评论 -
2020-09-11
已知整数n、m取值范围为{1,2,…,k},1<=k<=10000,且n2^22-nm-m2^22=1 求n2^22+m2^22的最大值采用Python编程如下:try: k = int(input("请输入正整数k:")) if k < 1: print("输入错误!") s_max, nr, mr = 0, 0, 0 for n in range(1, k + 1): for m in range(1, k + 1):原创 2020-09-11 19:27:31 · 114 阅读 · 0 评论 -
2020-08-29
再谈Java精度计算问题前文使用Java高精度计算2\sqrt22,采用二分法,精度达到小数点后2500位,其实是不准确的。因为控制台上并没有显示数据(一行超过一定数量的字符时系统默认无法显示),但并不代表没有数据。测试了一下,大概小数点后超过2728位后,无法正常显示;超过3700位后,计算时间比较长,这也是二分法的缺陷。在网上搜索了一阵子,有一个程序说是能够计算到小数点后上万位。但把代码复制过来后发现这个程序只是片段(函数),需要自己找出实参。试了一下,还是很快找到了。这一次把获得的数据先转换成字符原创 2020-08-29 22:45:51 · 157 阅读 · 0 评论 -
2020-08-29
使用Java高精度计算2\sqrt 22曾使用二分法计算2\sqrt22,当时用python编程,精度算到小数点后100位,但更高精度的计算时间很长。参考用二分法计算根号2。现在试尝使用Java编程,还是二分法,发现精度可以大大提高,达到小数点后2499位,不得不说,Java的运算速度要比Python快。编程思路:也没什么可说的,引入BigDecimal类,运算的优先级好像是从左到右。另外,那个比较函数(compareTo)的返回值是1或是-1,即前面的大返回1,否则返回-1,而不是true或fal原创 2020-08-29 16:51:57 · 290 阅读 · 0 评论 -
未解之谜
未解之谜(第一个Java程序)看了一下自己的博客,访问量最多的居然是未解之谜,其实没花什么功夫就写成了,可见角谷猜想有许多人关注。正好最近在学Java,就试着写了一个类似程序。一开始是这样的:package test;import java.util.Scanner;public class mystery { public static void main(String[] args) { // TODO Auto-generated method stub long n; S原创 2020-08-29 12:15:37 · 202 阅读 · 0 评论