代码改变世界

java算法(二)

  大额_skylar  阅读(372)  评论(0编辑  收藏  举报

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

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

 

 

复制代码
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);
                     }
                 }
             }
         }
     }
}
复制代码

 

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
点击右上角即可分享
微信分享提示