JAVA经典算法40题(2)

本文提供两个Java程序实例:一是找出所有三位的水仙花数,即那些各位数字立方和等于其本身的数;二是将任意输入的正整数分解为其质因数的乘积形式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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. }
public class Test{
    public Test(){}
    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="";
        Test c=new Test();
        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);
   }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值