| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1915 人关注过本帖
标题:用while循环编程实现分解一个数的质因数的过程
只看楼主 加入收藏
孟超
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-4-3
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:7 
用while循环编程实现分解一个数的质因数的过程
要求编程实现分解一个数的质因数的过程例如;90 = 2*3*3*5
只限于利用while循环,主要是对于循环条件很迷茫,求前辈们指点
int i = 1;//用来抽取因数,使其循环相加
int num;//控制台输入的数据
    System.out.print(num+"=");
   while(循环条件){
         i++;
          if(num !=i){//排除素数
            if(num%i == 0){//找出能整除的数字
                System.out.print(i+"*");//输出这个数字
                    num = num /i;//继续分解
        }
   }         
}

[ 本帖最后由 孟超 于 2015-4-3 17:23 编辑 ]
搜索更多相关主题的帖子: 质因数 控制台 
2015-04-03 17:09
开发者联盟
Rank: 2
等 级:论坛游民
帖 子:2
专家分:18
注 册:2014-10-17
收藏
得分:18 
num >=2 ,在最后一个if里,应该i赋值为1(每次分解出一个质因数后,要判断下一个,需从2开始判断)
2015-04-04 08:34
孟超
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-4-3
收藏
得分:0 
回复 2楼 开发者联盟
num>=2是循环条件吗?这个循环条件不合理啊,无法停止啊
  i 赋值为1,每次都从二开始?在哪里赋值,  if里面吗
2015-04-04 20:38
孟超
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-4-3
收藏
得分:0 
回复 2楼 开发者联盟
非常感谢,已经成功了,我怎么没想到呢,我一直就是很迷惑怎么让他从头开始,原来这样也可以的啊,真的非常感谢,那个循环条件,整数num>i
2015-04-04 21:07
日知己所无
Rank: 11Rank: 11Rank: 11Rank: 11
等 级:贵宾
威 望:38
帖 子:427
专家分:2071
注 册:2014-3-22
收藏
得分:2 
程序代码:
public class PrimeDecomposition {
    public static void main(String... args) {
        Long value = -1L;
        while (value <= 90) {
            printPrimeDecomposition(value);
            value++;
        }
    }

    // 打印质因数分解结果
    public static void printPrimeDecomposition(final Long inputValue) {
        java.util.LinkedList<Long> printValueList = primeDecomposition(inputValue);

        System.out.print(inputValue + "=");
        int index = 0;
        while (index < printValueList.size()) {
            System.out.print(printValueList.get(index) + ((index == printValueList.size() - 1) ? "" : "*"));
            index++;
        }
        System.out.println();
    }

    // 质因数分解
    public static java.util.LinkedList<Long> primeDecomposition(final Long inputValue) {
        java.util.LinkedList<Long> returnValue = new java.util.LinkedList<Long>(); // 返回值

        Long dividend = inputValue; // 被除数
        Long divisor = 2L; // 除数

        if (dividend <= 1) {
            returnValue.add(dividend);
        } else {
            while (dividend > 1) {
                while (dividend % divisor == 0) {
                    returnValue.add(divisor);
                    dividend = dividend / divisor;
                }
                divisor++;
            }
        }

        return returnValue;
    }
}


程序代码:
-1=-1
0=0
1=1
2=2
3=3
4=2*2
5=5
6=2*3
7=7
8=2*2*2
9=3*3
10=2*5
11=11
12=2*2*3
13=13
14=2*7
15=3*5
16=2*2*2*2
17=17
18=2*3*3
19=19
20=2*2*5
21=3*7
22=2*11
23=23
24=2*2*2*3
25=5*5
26=2*13
27=3*3*3
28=2*2*7
29=29
30=2*3*5
31=31
32=2*2*2*2*2
33=3*11
34=2*17
35=5*7
36=2*2*3*3
37=37
38=2*19
39=3*13
40=2*2*2*5
41=41
42=2*3*7
43=43
44=2*2*11
45=3*3*5
46=2*23
47=47
48=2*2*2*2*3
49=7*7
50=2*5*5
51=3*17
52=2*2*13
53=53
54=2*3*3*3
55=5*11
56=2*2*2*7
57=3*19
58=2*29
59=59
60=2*2*3*5
61=61
62=2*31
63=3*3*7
64=2*2*2*2*2*2
65=5*13
66=2*3*11
67=67
68=2*2*17
69=3*23
70=2*5*7
71=71
72=2*2*2*3*3
73=73
74=2*37
75=3*5*5
76=2*2*19
77=7*11
78=2*3*13
79=79
80=2*2*2*2*5
81=3*3*3*3
82=2*41
83=83
84=2*2*3*7
85=5*17
86=2*43
87=3*29
88=2*2*2*11
89=89
90=2*3*3*5


如果想提高运行效率,可以额外追加一些退出循环的条件
2015-04-04 22:26
孟超
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-4-3
收藏
得分:0 
回复 5楼 日知己所无
哥,谢谢您的答复可是我看不懂啊,我刚刚开始学习JAVA ,    不要介意哈,您看看我写的指点一下呗,

import java.util.Scanner;

public class primeNumber {

    public static void main(String[] args) {
        System.out.println("请输入一个数:");
        Scanner input = new Scanner(System.in);
        int num= input.nextInt();
        int i = 1;
        System.out.print(num +"=");   
        while(num>i){//当i= num的时候就停止循环。
            i++;//每次+1,从2开始循环
            if(num!=i){//num不等于i 的情况下,再执行,排出素数
            if(num%i == 0){//num被i整除的话就执行,找出因数
                System.out.print(i+ "*");//找出因数并输出;
                num = num / i;//num再除这个因数,继续往下分解;
                i = 1;//每次都从2开始,避免越来越大,后面分解不开
               
               
            }
        
            }else{
                System.out.println("素数");
               
               
            }
        }
        System.out.print(num);//加上最后一个
        

    }

}
2015-04-05 19:22
孟超
Rank: 1
等 级:新手上路
帖 子:11
专家分:0
注 册:2015-4-3
收藏
得分:0 
回复 7楼 ywh850210
哥,我刚开始学,有能力了再进您公司,祝您成功
2015-04-06 19:48
快速回复:用while循环编程实现分解一个数的质因数的过程
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028459 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved