自己做题的简单的算法

1,题目:判断101-200之间有多少个素数,并输出所有素数。

 

 1 package example;
 2 
 3 public class Test {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         int count =0;
10         for(int i=101;i<=201;i++){
11         if(issushu(i)==true){
12             count++;
13             System.out.print(i+" ");
14         }
15         }
16         System.out.println(count+"个素数");
17     }
18     
19 
20     private static boolean issushu(int i) {
21         for(int j=2;j<i;j++)
22         {
23             if(i%j==0)
24                 return false;        
25         }
26         return true;
27     }    
28 }

 

101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199 21个素数

 

 

2题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身

 1 package example;
 2 
 3 public class Test {
 4 
 5     /**
 6      * @param args
 7      */
 8     public static void main(String[] args) {
 9         
10         for(int i=100;i<=999;i++){
11         if(ishua(i)==true)
12             System.out.print(i+" ");
13         
14         }
15     }
16     
17 
18     private static boolean ishua(int i) {
19         int j=i/100;
20         int q=(i-100*j)/10;
21         int p=i-100*j-10*q;
22         if(j*j*j+q*q*q+p*p*p==i)
23             return true;
24         else 
25             return false;
26     }    
27 }

153 370 371 407

 

 

3将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5

 

package example;

public class Test {

    /**
     * @param args
     */
    public static void main(String[] args) {
        fenjie(90);
            
    }
    public static void fenjie(int n) {
        for (int i = 2; i <= n; i++)
        {
            if (n % i == 0) 
            {
                System.out.print(i);
                if(n!=i)
                {
                    System.out.print("*");
                }
                fenjie(n/i);
            }
        }
        System.exit(0); 
    }
        
}    

 

2*3*3*5

 

 

4【程序6】题目:输入两个正整数m和n,求其最大公约数和最小公倍数。

class test  
{
    public static void main (String[] args) throws java.lang.Exception
    {
        System.out.println(yue(8,20));
        System.out.println(bei(8,20));
    }
    public static int yue(int i,int j)
    {         
        int max=0;
        for (int x=1;x<=i||x<=j ;x++ ) 
        {
            if(i%x==0&&j%x==0)
            max=x;
        }
        return max;
    }
    public static int bei(int i,int j)
    {    
        int x=i>j?i:j;
        while(x%i!=0||x%j!=0)
        {
            x++;
        }
        return x;
    }
}

4
40

 

答案有说道辗转相除法,可以看看了解下。

 

 

5

 

你可能感兴趣的:(自己做题的简单的算法)