求取水仙花数 && 将整数分解成质因数

【程序3】

题目:打印出所有的"水仙花数",所谓"水仙花数"是指一个三位数,其各位数字立方和等于该数本身。
例如:
153是一个"水仙花数",153=1的三次方+5的三次方+3的三次方。

解法1:

  较为简单的思路,也是我一开始想到的,但是依旧没能自己实现出来.

  int num ;  //待判断整数

  int m,n,q;  //三位数的百位,十位和个位

  只需要满足: m*m*m + n*n*n + q*q*q = 100m + 10n + q 即可.使用三个for循环来分别控制百位,十位和个位

 1 private static void method2() {
 2         for(int a = 1;a < 10;a++){
 3             for(int b = 0;b < 10;b++){
 4                 for(int c = 0;c < 10;c++){
 5                     int n = a*a*a + b*b*b + c*c*c;
 6                     int m = 100*a + 10*b + c;
 7                     if(m == n){
 8                         System.out.println(n);
 9                     }
10                 }
11             }
12         }
13     }

解法2:

  网上有一种实现方式是:通过做除法和取余的手段分别得到三个位上的数字,使用m*m*m + n*n*n + q*q*q等于此整数的方式来确定.

  num%10 得到个位数

  num/10再%10 得到十位数

  num/100  得到百位数

 1     private static void method1() {
 2         for(int i = 100;i < 1000;i++){
 3             int a = i % 10;            //153%10 3
 4             int b = (i/10)%10;        //15%10 5
 5             int c = i/100;            //153/100 1
 6             if(i == a*a*a + b*b*b + c*c*c){
 7                 System.out.println(i);
 8             }
 9         }
10     }

 

【程序4】
题目:将一个正整数分解质因数。例如:输入90,打印出90=2*3*3*5。

分析:

  想象以下,自己平时拿到一个正整数要分解的时候,一般都是从最小的质数,也就是2开始计算.然后对于做了除法之后的部分再次实现之前的操作.大概可以知道,本题需要一个递增的除数以及循环来实现.

  正整数num,除数k = 2

  1.如果num == 2,那么直接结束程序;

  2.如果num > 2,判断num % 2 是否等于0,

      如果等于0的话,说明2是nun的其中一个质因数,输出2,并且使num = num / k;

      如果不等于0的话,说明不能被2整除,k++之后再次执行上面的判断.

      直到循环条件不成立

      不知道循环的次数,使用while()

 

 1 public static void method(int num){
 2         int k = 2;
 3         if(num == k){
 4             System.out.print(k + "*");
 5         }
 6         while(num > k ){
 7             if(num % k == 0){
 8                 System.out.print(k + "*");
 9                 num = num / k;
10             }
11             if(num % k != 0){
12                 k++;
13             }
14         }
15         System.out.println(k);
16     }

 

posted @ 2017-03-08 19:19  leevanes  阅读(305)  评论(0编辑  收藏  举报