![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
algorithm Practice
Yes_JiangShuai
默默奋斗的攻城狮 向往掌握技术而不限于技术
展开
-
数学问题——找“完数”
一、数学背景介绍:如果一个数恰好等于其因子之和,这个数就称为完美。例如,6=1+2+3,6就是一个完数。而第二个完数是28,28=1+2+4+7+14。完数在自然数中很少。据统计,在1~4000万这么多的自然数里,只有7个完数,依次是6,28,496,8128,120816,2096128,33550336。二、要求编写代码实现找出10000以内的所有完数。package com.js.m原创 2017-06-18 10:03:54 · 977 阅读 · 0 评论 -
网易2018校招在线编程题-第一题
package com.neitui.demo1;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int a = sc.nextInt();//房租 int b = sc.next原创 2017-08-12 17:30:25 · 751 阅读 · 0 评论 -
数学问题——割圆法求π的近似值
使用概率法得到的圆周率,其值具有不确定性。而古人计算圆周率,一般是用割圆法,即用圆的内接或外切正多边形来逼近圆的周长。Archimedes用正96边形得到圆周率小数点后三位的精度,刘徽用正3072边形得到5位精度。编写割圆法求π得近似值,示例代码如下:package com.maths;/** * 割圆法求解圆周率的近似值 */import java.util.Scanner;原创 2017-07-22 16:18:17 · 5210 阅读 · 0 评论 -
数学问题——概率法求π的近似值
圆周率是一个非常重要的常数。使用计算机程序计算圆周率有多种方法,如概率法、割圆法、公式法等等。我们将一一介绍。本文先介绍最常见的一种,概率法。模拟掷点,x,y,为方便计算,我们取一个以原点为圆心,半径为一的圆,然后在(0,1)内取x,y为随机数,当x平方加y平方小于1时,表明该点在第一象限的四分之一圆的范围内。理论上来说,掷点次数越多,得到的近似值越精确。示例代码如下:package co原创 2017-07-22 15:50:00 · 3145 阅读 · 0 评论 -
数学问题——判断闰年
闰年(leap year)是一个比较简单而又经典的数学问题。通俗来讲,闰年就是能够被4整除,但同时不能够被100整除却能够被400整除的年份。示例代码如下:package com.js.MathProb;/** * 闰年问题 */import org.junit.Test;public class LeapYear { boolean leapyear(int year){原创 2017-07-04 10:41:27 · 1048 阅读 · 0 评论 -
数学问题——用递归计算阶乘
在程序设计中,阶乘与斐波那契数列一道经常被选为递归算法的素材,因为阶乘满足下面的递归关系:n! = n*(n-1)!计算n的阶乘的程序很简单,具体代码如下:package com.js.math;import java.util.Scanner;/** * 阶乘 n! = 1*2*3*4*5*...*n * 用递归计算阶乘 * @author js * */publ原创 2017-06-23 14:12:03 · 1093 阅读 · 0 评论 -
数学问题——哥德巴赫猜想
哥德巴赫1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的偶数都可写成两个质数之和。参考代码:package com.js.math;import java.util.Scanner;/** * 对于哥德巴赫猜想的验证 * 基本思路 * 设n为大于等于6的一个偶数,可将其分解为n1和n2两个数,分别检查n1和n2是否为素数 * 若都是素数,则该数得到验证。若n1不是原创 2017-06-21 16:25:50 · 1111 阅读 · 0 评论 -
数学问题——求回文平方数
回文数,是指一个多位数在按位读时,无论是从右到左还是从左到右,其结果都是一样的特征。回文平方数,是回文数的同时,还是一个数的平方。思路,构建两个辅助函数,一个用于判断回文,一个用于判断是否为平方数。参考代码:package com.js.math;import java.util.Scanner;/** * 平方回文数:由一个整数的平方得到的回文数原创 2017-06-21 11:28:06 · 1270 阅读 · 0 评论 -
数学问题——求回文素数
回文素数,是指一个多位数在按位读时,无论是从右到左还是从左到右,其结果都是一样的特征。思路,构建两个辅助函数,一个用于判断回文,一个用于判断是否为素数。参考代码:package com.js.math;import java.util.Scanner;/** * 回文素数 * 是指一个多位数在按位读时,无论是从右到左还是从左到右,其结果都是一样的特征 */public原创 2017-06-21 11:16:01 · 631 阅读 · 0 评论 -
数学问题——求素数(改进做法)
其实,对素数的定义进行进一步的分析,要判断数N是否为素数,不需要用N一直除到N-1才能确认,而只需要除到N的平方根即可。package com.js.math;import java.util.Scanner;/** * 素数 * 要求N不是素数,可用N依次除以2~N-1之间的数,若某个数能被整除,则表示N不是素数 * 其实除到根号下N即可,减少循环次数 * @author j原创 2017-06-20 10:02:51 · 378 阅读 · 0 评论 -
数学问题——求素数(常规做法)
所谓素数,是指除了1和自身之外,没有别的因数的数。除了1和自身之外,还有别的因数的数是合数。1既不是素数也不是合数。素数的分布是没有规律的。要求N是不是素数,可用N逐个除以2~N-1之间的数,若某个数能被整除,则表示该数不是素数。package com.js.math;import java.util.Scanner;/** * 素数 * 要求N不是素数,可用N依次除以2~N-1之原创 2017-06-20 09:53:21 · 570 阅读 · 0 评论 -
数学问题——最大公约数和最小公倍数(Stein算法)
一、欧几里德算法缺陷欧几里德算法是计算两个数最大公约数的传统算法,无论从理论还是从实际效率上都是很好的。但是却有一个致命的缺陷,这个缺陷在素数比较小的时候一般是感觉不到的,只有在大素数时才会显现出来。一般实际应用中的整数很少会超过64位(当然现在已经允许128位了),对于这样的整数,计算两个数之间的模是很简单的。对于字长为32位的平台,计算两个不超过32位的整数的模,只需要一个指令周期原创 2017-06-19 15:31:33 · 774 阅读 · 0 评论 -
数学问题——最大公约数和最小公倍数(辗转相除法)
使用欧几里得算法(辗转相除法)求输入的两个整数的最大公约数和最小公倍数。package com.js.math;import java.util.Scanner;/** * 最大公约数和最小公倍数 * 解法一 * 欧几里得算法(辗转相除法) * @author js * */public class GCD_LCM1 { public static void main(原创 2017-06-19 15:19:17 · 600 阅读 · 0 评论 -
数学问题——找“水仙花数”
一、数学背景介绍:英国大数学家哈代曾发现一种有趣的现象:153=1*1*1+5*5*5+3*3*3371=3*3*3+7*7*7+1*1*1370=3*3*3+7*7*7+0*0*0407=4*4*4+0*0*0+7*7*7这些是三位数,并且数值等于各位数字的三次幂之和。这种数就称为“水仙花数”。二、要求编写代码实现找出给定范围以内的亲密数。原创 2017-06-18 16:41:47 · 749 阅读 · 0 评论 -
数学问题——找“自守数”
一、数学背景介绍:所谓“自守数”,是指一个数的平方的尾数等于该数自身的自然数。例如,6的平方等于36,尾数是6,所以6是自守数;25的平方是625,尾数是25,所以25是自守数。二、要求编写代码实现找出给定范围以内的自守数。package com.js.math;import java.util.Scanner;/** * 自守数 * 一个数的平方的尾数原创 2017-06-18 17:10:24 · 3057 阅读 · 0 评论 -
数学问题——找“亲密数”
一、数学背景介绍:假设有a、b两个数,若a的因子之和等于b,b的因子之和等于a,并且a不等于b,则称a和b是一对亲密数。二、要求编写代码实现找出给定范围以内的亲密数。package com.js.math;import java.util.Scanner;/** * 亲密数 * @author js * */public class ClosePair { pu原创 2017-06-18 16:13:05 · 1280 阅读 · 0 评论 -
网易2018校招在线编程题-第二题
package com.neitui.demo2;import java.util.Arrays;import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int n = sc.nextInt原创 2017-08-12 17:30:58 · 785 阅读 · 4 评论