JAVA经典算法40题(2)

来源:互联网 发布:大数据总监 编辑:程序博客网 时间:2024/06/05 00:23

【程序3】题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花数 ",因为153=1的三次方+5的三次方+3的三次方。
1.程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。

Java代码 复制代码 收藏代码
  1. public class exp2{
  2. public static void main(String args[]){
  3. int i=0;
  4. math mymath = new math();
  5. for(i=100;i<=999;i++)
  6. if(mymath.shuixianhua(i)==true)
  7. System.out.println(i);
  8. }
  9. }
  10. class math{
  11. public boolean shuixianhua(int x){
  12. int i=0,j=0,k=0;
  13. i=x / 100;
  14. j=(x % 100) /10;
  15. k=x % 10;
  16. if(x==i*i*i+j*j*j+k*k*k)
  17. return true;
  18. else
  19. return false;
  20. }
  21. }

【程序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的值,重复执行第一步。

Java代码 复制代码 收藏代码
  1. public class Test{
  2. public Test(){}
  3. public void fengjie(int n){
  4. for(int i=2;i<=n/2;i++){
  5. if(n%i==0){
  6. System.out.print(i+"*");
  7. fengjie(n/i);
  8. }
  9. }
  10. System.out.print(n);
  11. System.exit(0);///不能少这句,否则结果会出错
  12. }
  13. public static void main(String[] args){
  14. String str="";
  15. Test c=new Test();
  16. str=javax.swing.JOptionPane.showInputDialog("请输入N的值(输入exit退出):");
  17. int N;
  18. N=0;
  19. try{
  20. N=Integer.parseInt(str);
  21. }catch(NumberFormatException e){
  22. e.printStackTrace();
  23. }
  24. System.out.print(N+"分解质因数:"+N+"=");
  25. c.fengjie(N);
  26. }
  27. }

原创粉丝点击