黑马程序员技术交流社区

标题: Java经典算法案例有哪些? [打印本页]

作者: 18618120018    时间: 2014-7-23 23:44
标题: Java经典算法案例有哪些?
public

class
exp2{

public

static

void
main(String args[]){


int
i=0;


math mymath =
new
math();


for
(i=100;i<=999;i++)



if
(mymath.shuixianhua(i)==
true
)



System.
out
.println(i);

}
}  
class
math
{

public

int
f(
int
x)

{


if
(x==1 || x==2)



return
1;


else




return
f(x-1)+f(x-2);

}

public

boolean
iszhishu(
int
x)

{


for
(
int
i=2;i<=x/2;i++)



if
(x % 2==0 )




return

false
;


return

true
;

}

public

boolean
shuixianhua(
int
x)

{

   
int
i=0,j=0,k=0;

   i=x / 100;

   j=(x % 100) /10;

   k=x % 10;

   
if
(x==i*i*i+j*j*j+k*k*k)


   
return

true
;

   
else



   
return

false
;

   


}
}
  
【程序
4


  
题目:将一个正整数分解质因数。例如:输入
90,
打印出
90=2*3*3*5


   
程序分析:对
n
进行分解质因数,应先找到一个最小的质数
k
,然后按下述步骤完成:

  

(1)
如果这个质数恰等于
n
,则说明分解质因数的过程已经结束,打印出即可。

  
  
(2)
如果
n <> k
,但
n
能被
k
整除,则应打印出
k
的值,并用
n
除以
k
的商
,
作为新的正整数你
,
重复执行第一步。

  

(3)
如果
n
不能被
k
整除,则用
k+1
作为
k
的值
,
重复执行第一步。

  
  
public

class
exp2{

public
exp2(){}  
   
public

void
fengjie(
int
n){
   
   

for
(
int
i=2;i<=n/2;i++){
   
   
   
  
if
(n%i==0){  
   
   
   
   
   System.
out
.print(i+
"*"
);
   
   
   
   
   fengjie(n/i);
   
   
   
   
   }
   
   
}  
   
   
System.
out
.print(n);  
   
   
System.
exit
(0);
///
不能少这句,否则结果会出错

   
   
}  
   
   

public

static

void
main(String[] args){
   
   
   
   String str=
""
;  
   
   
   
   exp2 c=
new
exp2();  
   
   
   
   str=javax.swing.JOptionPane.
showInputDialog
(
"
请输入
N
的值(输入
exit
退出):
"
);
   
   
   
   
int
N;
   
   
   
   N=0;
   
   
   
   
try
{  
   
   
   
   
   
   
  N=Integer.
parseInt
(str);  
   
   
   
   
   
   
  }
catch
(NumberFormatException e){
   
   
   
   
   
   
   
   e.printStackTrace();
   
   
   
   
   
   
   
   }  
   
   
   
  System.
out
.print(N+
"
分解质因数:
"
+N+
"="
);
   
   
   
  c.fengjie(N);
   
   
}  
  

}  
【程序
5


  
题目:利用条件运算符的嵌套来完成此题:学习成绩
> =90
分的同学用
A
表示,
60-89
分之间的用
B
表示,
60
分以下的用
C

示。

  
  
1.
程序分析:
(a> b)?a:b
这是条件运算符的基本例子。

  
  
import
javax.swing.*;
public

class
ex5 {  
   
   

public

static

void
main(String[] args){
   
   
   
   String str=
""
;  
   
   
   
   str=JOptionPane.
showInputDialog
(
"
请输入
N
的值(输入
exit
退出):
"
);
   
   
   
   
int
N;
   
   
   
   N=0;
   
   
   
   
try
{  
   
   
   
   
   N=Integer.
parseInt
(str);
   
   
   
   
}  
   
   
   
   
catch
(NumberFormatException e){
   
   
   
   
   e.printStackTrace();
   
   
   
   
  }  
   
   
   
   str=(N>90?
"A"
:(N>60?
"B"
:
"C"
));
   
   
   
   System.
out
.println(str);
   
   
}  
  

}  
【程序
6


  
题目:输入两个正整数
m

n
,求其最大公约数和最小公倍数。

  

1.
程序分析:利用辗除法。

  
  
最大公约数:
  
public

class
CommonDivisor{  
   
public

static

void
main(String args[])
    {  
   
   

commonDivisor
(24,32);
    }  
   
static

int
commonDivisor(
int
M,
int
N)
    {  
   
   

if
(N<0||M<0)
   
   
{  
   
   
   
  System.
out
.println(
"ERROR!"
);
   
   
   
  
return
-1;
   
   
}  
   
   

if
(N==0)
   
   
{  
   
   
   
  System.
out
.println(
"the biggest common divisor is :"
+M);
   
   
   
  
return
M;
   
   
}  
   
   

return

commonDivisor
(N,M%N);
    }
}  
最小公倍数和最大公约数:
  
import
java.util.Scanner;  
public

class
CandC  
{   
//
下面的方法是求出最大公约数
  
public

static

int
gcd(
int
m,
int
n)  
{   
while
(
true
)  
{   
if
((m = m % n) == 0)  
return
n;   
if
((n = n % m) == 0)  
return
m;  
}  
}   
public

static

void
main(String args[])
throws
Exception  
{   
//
取得输入值
  
//Scanner chin = new Scanner(System.in);

//int a = chin.nextInt(), b = chin.nextInt();

int
a=23;
int
b=32;
int
c =
gcd
(a, b);   
System.
out
.println(
"
最小公倍数:
"
+ a * b / c +
"\n
最大公约数:
"
+ c);  
}  
}  

作者: liuniansis    时间: 2014-7-24 15:39
额。哥们。。你这代码。。好错综复杂,而且你说的算法,你想要什么算法?
作者: HPU--spring87    时间: 2014-7-25 22:12
这代码,,,,,,,,,眼花缭乱,撤。。。
作者: yqj    时间: 2014-7-27 13:44
着代码,看晕了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2