java算法(二)

四、最小公倍数最大公约数问题:

分析:两个数的最小公倍数等于两个数相乘再除以他们的最大公约数,因此只要求出最大公约数就可以啦。

package JingDian;

public class yuebeishu {
//用来求最大公约数的函数(debug看结果吧,好巧妙)
public static int gcd(int m,int n)
{
while(true)
{
if((m=m%n)==0)
{
return n; }
if((n=n%m)==0)
{
return m;
}
System.out.println("m值"+m+"\tn值"+n);
}
}
public static void main(String[] args)
throws Exception
{
int a=23,b=32;
int c=gcd(a,b);
System.out.println("最小公倍数:"+a*b/c+"\n最大公约数:"+c);
}
}

五、求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222

package JingDian;

import java.io.InputStreamReader;
import java.util.Scanner; public class dieshuhe {
public static void main(String[] args)
{ System.out.println("请输入最大的a的值:");
int result =0;
int st = 0;
int i=1;
//获取键盘输入
Scanner sc = new Scanner(new InputStreamReader(System.in));
String input = sc.next();
String [] str=new String[input.length()]; for(int tmp=0;tmp<input.length();tmp++)
{ if(i>input.length())
{
break;
}
//str[tmp]中装的是input的前tmp个字母因此本程序不仅可以计算当a输入为4444时候4+44+444+4444这样的表达式,
//还可以计算a暑促为432时4+43+432这样的表达式,只要输入最大的那个数就可以了。
str[tmp]=input.substring(0,i);
i++;
//将str[tmp]解析为整数进行相加
st = Integer.parseInt(str[tmp]);
result = result + st; } System.out.println(result);
} }

六、排列组合数问题

题目: 有数字1,2,3,4,能组成多少个互不相同且无重复数字的三位数?都是多少?

分析:先组成数,再去掉重复的数字(so easy)

package JingDian;

public class pailieshu {
public static void main(String[] args){ for(int i=1;i<=4;i++)
{
for(int j=1;j<=4;j++)
{
for(int k=1;k<=4;k++)
{
if(i!=j&&j!=k&&k!=i)
{
System.out.println(i*100+j*10+k);
}
}
}
}
}
}
上一篇:ubuntu server 网络配置,主机名配置


下一篇:python和Java的几种容器比较