day24

1:輸入兩個正整數m和n,求其最大公約數和最小公倍數。

public class text {  
    public static void main(String args[]){   
       gcdlcm a =new gcdlcm();  
       System.out.println("兩數的最大公約數是:"+a.gcd(10, 16));  
       System.out.println("兩數的最小公倍數是:"+a.lcm(16, 10));  
   }          
}  
class gcdlcm{  
    int gcd(int m,int n){  
        if(m<n){   //這個判斷是爲了將大數放在前面  
         int temp=n;  
         n=m;  
         m=temp;              
        }  
        if(m%n==0){     
            return n;  
        }  
          else{  
             m%=n;  
             return gcd(m,n);   
          //這裡也可以寫成gcd(n,m),就省掉了前面的判斷了,會快一點  
             }    
    }  
    int lcm(int m,int n){  
        int i=1;  
        if(m<n){   //這個判斷是爲了將大數放在前面  
             int temp=n;  
             n=m;  
             m=temp;              
            }  
        int lcm=m;  
        while(lcm%n!=0){  
            lcm=m*i;  
            i++;  
        }  
        return lcm;  
    }  
}  


2 輸入一行字符,分別統計出其中英文字母、空格、數字和其它字符的個數。


public class test1 {  
    public static void main(String[] args) {  
        // TODO Auto-generated method stub  
        int abcCount=0;//英文字母個數  
        int spaceCount=0;//空格鍵個數  
        int numCount=0;//數字個數  
        int otherCount=0;//其他字符個數  
        Scanner scan=new Scanner(System.in);  
        String str=scan.nextLine();  
        char[] ch = str.toCharArray();  
        for(int i=0;i<ch.length;i++){  
        if(Character.isLetter(ch[i])){  
        //判斷是否字母  
        abcCount++;  
        }  
        else if(Character.isDigit(ch[i])){  
        //判斷是否數字  
        numCount++;  
        }  
        else if(Character.isSpaceChar(ch[i])){  
        //判斷是否空格鍵  
        spaceCount++;  
        }  
        else{  
        //以上都不是則認爲是其他字符  
        otherCount++;  
        }  
        }  
        System.out.println("字母個數:"+abcCount);  
        System.out.println("數字個數:"+numCount);  
        System.out.println("空格個數:"+spaceCount);  
        System.out.println("其他字符個數:"+otherCount);  
        }  
  
}  
3 題目:將一個正整數分解質因數。例如:輸入90,打印出90=2*3*3*5。
(1)如果這個質數恰等於n,則說明分解質因數的過程已經結束,打印出即可。
(2)如果n<>k,但n能被k整除,則應打印出k的值,並用n除以k的商,作爲新的正整數你n,重複執行第一步。
(3)如果n不能被k整除,則用k+1作爲k的值,重複執行第一步。


public class test3{   
  public static void main(String[] args){   
    int x;  
    Scanner in = new Scanner(System.in);//定義從鍵盤輸入   
    System.out.print("請輸入一個正整數:");//提示   
    x = in.nextInt(); //將從鍵盤輸入的數賦值給x   
    new PrimeSplit(x); //匿名初始化一個對象,還有參數的構造函數   
  }   
}   
class PrimeSplit{   
  int k = 2; //將最小的質數賦值給k   
  public PrimeSplit(int x){  //小於等於1的數不可以分解   
    if(x<=1){   
      System.out.println(x+"是無效的被分解數");   
    }   
    else if(x==2){   
      System.out.println(x+"分解後的質因數爲: 1*"+x);   //如果輸入的是最小質數2,   
    }else {   
      System.out.print(x+"分解後的質因數爲: 1"); //1是所有的正整數的質數   
      while(k<=x){   //輸入的數可以被k整除   
        if(x%k==0){   
          System.out.print("*"+k);           //將k添加到結果中   
          x = x/k;//除以最小質數後重新循環   
          }   
         else{   
          k++;   
          }   
        }   
      }   
    }      
  }  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章