JAVA经典算法案例

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

JAVAJAVAJAVAJAVA经典算法40404040例【程序1】题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第四个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....publicpublicpublicpublicclassclassclassclassexp2{publicpublicpublicpublicstaticstaticstaticstaticvoidvoidvoidvoidmain(Stringargs[]){intintintinti=0;forforforfor(i=1;i=20;i++)System.out.println(f(i));}publicpublicpublicpublicstaticstaticstaticstaticintintintintf(intintintintx){ifififif(x==1||x==2)returnreturnreturnreturn1;elseelseelseelsereturnreturnreturnreturnf(x-1)+f(x-2);}}或publicpublicpublicpublicclassclassclassclassexp2{publicpublicpublicpublicstaticstaticstaticstaticvoidvoidvoidvoidmain(Stringargs[]){intintintinti=0;mathmymath=newnewnewnewmath();forforforfor(i=1;i=20;i++)System.out.println(mymath.f(i));}}classclassclassclassmath{publicpublicpublicpublicintintintintf(intintintintx){ifififif(x==1||x==2)returnreturnreturnreturn1;elseelseelseelsereturnreturnreturnreturnf(x-1)+f(x-2);}}【程序2】题目:判断101-200之间有多少个素数,并输出所有素数。1.程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。publicpublicpublicpublicclassclassclassclassexp2{publicpublicpublicpublicstaticstaticstaticstaticvoidvoidvoidvoidmain(Stringargs[]){intintintinti=0;mathmymath=newnewnewnewmath();forforforfor(i=2;i=200;i++)ifififif(mymath.iszhishu(i)==truetruetruetrue)System.out.println(i);}}classclassclassclassmath{publicpublicpublicpublicbooleanbooleanbooleanbooleaniszhishu(intintintintx){forforforfor(intintintinti=2;i=x/2;i++)ifififif(x%i==0)returnreturnreturnreturnfalsefalsefalsefalse;returnreturnreturnreturntruetruetruetrue;}}【程序3】题目:打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153=1的三次方+5的三次方+3的三次方。1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。publicpublicpublicpublicclassclassclassclassexp2{publicpublicpublicpublicstaticstaticstaticstaticvoidvoidvoidvoidmain(Stringargs[]){intintintinti=0;mathmymath=newnewnewnewmath();forforforfor(i=100;i=999;i++)ifififif(mymath.shuixianhua(i)==truetruetruetrue)System.out.println(i);}}classclassclassclassmath{publicpublicpublicpublicintintintintf(intintintintx){ifififif(x==1||x==2)returnreturnreturnreturn1;elseelseelseelsereturnreturnreturnreturnf(x-1)+f(x-2);}publicpublicpublicpublicbooleanbooleanbooleanbooleaniszhishu(intintintintx){forforforfor(intintintinti=2;i=x/2;i++)ifififif(x%2==0)returnreturnreturnreturnfalsefalsefalsefalse;returnreturnreturnreturntruetruetruetrue;}publicpublicpublicpublicbooleanbooleanbooleanbooleanshuixianhua(intintintintx){intintintinti=0,j=0,k=0;i=x/100;j=(x%100)/10;k=x%10;ifififif(x==i*i*i+j*j*j+k*k*k)returnreturnreturnreturntruetruetruetrue;elseelseelseelsereturnreturnreturnreturnfalsefalsefalsefalse;}}【程序4】题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。程序分析:对n进行分解质因数,应先找到一个最小的质数k,然后按下述步骤完成:(1)如果这个质数恰等于n,则说明分解质因数的过程已经结束,打印出即可。(2)如果nk,但n能被k整除,则应打印出k的值,并用n除以k的商,作为新的正整数你,重复执行第一步。(3)如果n不能被k整除,则用k+1作为k的值,重复执行第一步。publicpublicpublicpublicclassclassclassclassexp2{publicpublicpublicpublicexp2(){}publicpublicpublicpublicvoidvoidvoidvoidfengjie(intintintintn){forforforfor(intintintinti=2;i=n/2;i++){ifififif(n%i==0){System.out.print(i+*);fengjie(n/i);}}System.out.print(n);System.exit(0);///不能少这句,否则结果会出错}publicpublicpublicpublicstaticstaticstaticstaticvoidvoidvoidvoidmain(String[]args){Stringstr=;exp2c=newnewnewnewexp2();str=javax.swing.JOptionPane.showInputDialog(请输入N的值(输入exit退出):);intintintintN;N=0;trytrytrytry{N=Integer.parseInt(str);}catchcatchcatchcatch(NumberFormatExceptione){e.printStackTrace();}System.out.print(N+分解质因数:+N+=);c.fengjie(N);}}【程序5】题目:利用条件运算符的嵌套来完成此题:学习成绩=90分的同学用A表示,60-89分之间的用B表示,60分以下的用C表示。1.程序分析:(ab)?a:b这是条件运算符的基本例子。importimportimportimportjavax.swing.*;publicpublicpublicpublicclassclassclassclassex5{publicpublicpublicpublicstaticstaticstaticstaticvoidvoidvoidvoidmain(String[]args){Stringstr=;str=JOptionPane.showInputDialog(请输入N的值(输入exit退出):);intintintintN;N=0;trytrytrytry{N=Integer.parseInt(str);}catchcatchcatchcatch(NumberFormatExceptione){e.printStackTrace();}str=(N90?A:(N60?B:C));System.out.println(str);}}【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。1.程序分析:利用辗除法。最大公约数:publicpublicpublicpublicclassclassclassclassCommonDivisor{publicpublicpublicpublicstaticstaticstaticstaticvoidvoidvoidvoidmain(Stringargs[]){commonDivisor(24,32);}staticstaticstaticstaticintintintintcommonDivisor(intintintintM,intintintintN){ifififif(N0||M0){System.out.println(ERROR!);returnreturnreturnreturn-1;}ifififif(N==0){System.out.println(thebiggestcommondivisoris:+M);returnreturnreturnreturnM;}returnreturnreturnreturncommonDivisor(N,M%N);}}最小公倍数和最大公约数:importimportimportimportjava.util.Scanner;publicpublicpublicpublicclassclassclassclassCandC{//下面的方法是求出最大公约数publicpublicpublicpublicstaticstaticstaticstaticintintintintgcd(intintintintm,intintintintn){whilewhilewhilewhile(truetruetruetrue){ifififif((m=m%n)==0)returnreturnreturnreturnn;ifififif((n=n%m)==0)returnreturnreturnreturnm;}}publicpublicpublicpublicstaticstaticstaticstaticvoidvoidvoidvoidmain(Stringargs[])throwsthrowsthrowsthrowsException{//取得输入值//Scannerchin=newScanner(System.in);//inta=chin.nextInt(),

1 / 26
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功