⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gongyueshu.java

📁 算法分析实验 java实现: 有: 公约数 合并算法 字符排序 快速排序 马踏棋盘问题 马踏棋盘问题(文本做法) 折半查找 最大子段和
💻 JAVA
字号:
import javax.swing.JOptionPane;
public class Gongyueshu
 {
    public static void main(String[] args)
    {
    	String mString=JOptionPane.showInputDialog(null,"请输入一个整数m:","最大公约数的求解--输入",JOptionPane.QUESTION_MESSAGE);
    	int m=Integer.parseInt(mString);
    	String nString=JOptionPane.showInputDialog(null,"请输入一个整数n:","最大公约数的求解--输入",JOptionPane.QUESTION_MESSAGE);
    	int n=Integer.parseInt(nString);
                	            
        int a,b,v,r,cishu=0;                //方法1数据定义
        int c,d,t,x=0;              //方法2数据定义
        int e,p,i=-1,j=-1,f,g,k,l,q;  //方法3数据定义        
        if(m>n)
         {
          a=m;
          b=n;
         }
        else
         {
          a=n;
          b=m;
         } 
         c=a;                        //方法2数据定义
         d=b;
         f=a;                        //方法3数据定义
         g=b;
        int[] s1=new int[f];
        int[] s2=new int[g];
        {  
         	{//用欧几里德算法 
                  
                if(a%b==0)
                  {
                	v=b; 
                    cishu=1;
                  }
                else
                  {
                  do
                  {
                      r=a%b;
                      a=b;
                      b=r;
                      cishu++;
                  }while(r!=0); 
                      v=a;
                  }
             }
             
             { //从较小数求解两个数的最大公约数
             if(c%d==0)
                {
                  	x=d;
                }
             else
                {
                for(t=d;t>1;t--)
                  {
	               if((c%t==0)&&(d%t==0))
                    	{
	                   	x=t;
	                   	break;
	                    }
               	   else
		           x=1;
                   }
                }
              }	
        
        
              {//用两个数的所有公约数进行比较
                          for(e=f;e>=1;e--)
                            {
                             if(f%e==0)
                               {
	                            j=j+1;
                                s1[j]=e;
                               }
                            }
                          for(p=g;p>=1;p--)
                            {
                             if(g%p==0)
                               {
                             	i=i+1;
                                s2[i]=p;
                               }
                            }
                        for(l=0;l<i-1;l++)
                       	for(q=0;q<j-1;q++)
                               {
                                if(s1[q]==s2[l])                     
                                    break;
                               }             
                                k=s2[l];

               }
                        
         }  
                 	        
              String output="整数"+m+"和"+n+"的最大公约数是:\n"+      
        	 	            "(1)欧几里德算法:"+v+	"\n"+
        	 	            	"执行次数是:"+cishu+"\n"+
        	 	            "(2)从较小数求解两个数的最大公约数:"+x+"\n"+
        	              	"(3)用两个数的所有公约数进行比较:"+k+"\n";
             JOptionPane.showMessageDialog(null,output,"最大公约数的求解--输出",JOptionPane.INFORMATION_MESSAGE);
        } 
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -