博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
基本算法实现
阅读量:6368 次
发布时间:2019-06-23

本文共 2171 字,大约阅读时间需要 7 分钟。

1.最大公约数

/* * GCD(A,B)=GCD(A,B mod A)循环求模实现最大公约数 */public class Gcd {	public static void main(String[] args) {		int a,b,r;		Scanner sc=new Scanner(System.in);		a=sc.nextInt();		b=sc.nextInt();		r=a%b;		while(r!=0){			a=b;			b=r;			r=a%b;//一种类似方法的重用,靠循环实现		}		System.out.println(b);	}}
2.最小公倍数

/* * LCM(a,b)*GCD(a,b)=a*b--->LCM(a,b)=a*b/GCD(a,b)最小公倍数的求法 */public class Lcm {	public static void main(String[] args) {		Scanner sc=new Scanner(System.in);		int a=sc.nextInt();		int b=sc.nextInt();		int r=a%b;		int mid=a*b;	//	保存之前的a*b,因为后面的a,b均已改变		int m;		while(r!=0){			a=b;			b=r;			r=a%b;		}		m=mid/b;		System.out.println(m);	}}
3.n个数求最大公约数

/* * 实现了不间断输入整数求最大公约数 */public class NGcd2 {	public static void main(String[] args) {		Scanner sc=new Scanner(System.in);		int a=sc.nextInt();		int b;		int c=0;		while((b=sc.nextInt())!=0){//输入为0时表示结束,输入非零整数即展开计算最大公约数			int r=a%b;			while(r!=0){				a=b;				b=r;				r=a%b;			}			c=b;		//把每次求得的b传出去,因为下一轮的输入将覆盖前面计算的最大公约数		}		System.out.println(c);	}}

4.求数根

/* * 求一个数的数根,即为一个n位数的各个位上数字之和,结果若为大于9的数,则继续求其数根,直到结果不超过一位数为止. */public class NumRoot {	public static void main(String[] args) {		int num,sum=0;			Scanner sc=new Scanner(System.in);		num=sc.nextInt();		while(num!=0){			if(num<=9)				break;			sum=0;			while(num>0){//想重复利用此代码段对求得数字继续求数根,但又没必要写一个方法,只需将此代码段包含在一个循环里				sum+=num%10;				num/=10;			}			num=sum;			}		System.out.println(num);	}}

5.百元百鸡

/** * “百元买百鸡”是我国古代的著名数学题。题目这样描述:3元可以买1只公鸡,2元可以买一只母鸡,1元可以买3只小鸡。用100文钱买100只鸡, *  那么各有公鸡、母鸡、小鸡多少只?与之相似,有"鸡兔同笼"问题。 */public class BuyChicken {	public static void main(String[] args) {		for(int x=1;x<=24;x++){			int y=(200-8*x)/5;			if((200-8*x)%5==0){				int z=100-x-y;			   System.out.print(x+" ");				System.out.print(y+" ");				System.out.print(z);				System.out.println();					}			}	}}
6.水仙花数

/* *求(100-999内的)水仙花数。所谓水仙花数,是指一个三位数abc,如果满足a^3+b^3+c^3=abc,则abc是水仙花数。 */public class WaterFlower {	public static void main(String[] args) {		int a;		for(int i=100;i<1000;i++){			int sum=0,num=i;			while(num>0){				a=num%10;//分解三位数,每次取个位上的数字				sum+=a*a*a;				num/=10;//个位上数字取走后就可移除,用十位数代替			}			if(sum==i)				System.out.println(i);			}	}}

转载于:https://www.cnblogs.com/lucare/p/9312691.html

你可能感兴趣的文章
Zen Cart 如何添加地址栏上的小图标
查看>>
SecureCrt 连接Redhat linux
查看>>
[NHibernate]持久化类(Persistent Classes)
查看>>
如何在Hive中使用Json格式数据
查看>>
linux如何恢复被删除的热文件
查看>>
Eclipse(MyEclipse) 自动补全
查看>>
Struts2中dispatcher与redirect的区别
查看>>
zabbix agentd configure
查看>>
[From OpenBSD Man Page]CARP
查看>>
地图点聚合优化方案
查看>>
Google Chrome 快捷方式
查看>>
备考PMP心得体会
查看>>
vue proxy匹配规则
查看>>
线上应用故障排查之一:高CPU占用
查看>>
Extend Volume 操作 - 每天5分钟玩转 OpenStack(56)
查看>>
review what i studied `date` - 2017-4-1
查看>>
IronPython教程
查看>>
squid via检测转发循环
查看>>
计算分页
查看>>
iptables 做nat路由器脚本
查看>>