| 网站首页 | 业界新闻 | 群组 | 人才 | 下载频道 | 博客 | 代码贴 | 编程论坛
共有 439 人关注过本帖
标题:分解质因数
只看楼主 收藏
丘山君
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:87
专家分:154
注 册:2017-11-15
结帖率:54.55%
  已结贴   问题点数:20  回复次数:7   
分解质因数
小白刚开始学,请大佬帮忙看下,谢谢
分解质因数 如90=2*3*3*5
代码如下:
程序代码:
package branch;

import java.util.Scanner;

public class IntegerFactorization {
public static void main(String[] args) {
    Scanner scan=new Scanner(System.in);
    System.out.print("x=");
    Integer num=scan.nextInt();
    System.out.println();
    System.out.print("x=1");
    int i=2,j;
    while(num!=1) {
        //这里的变量i,在while循环里想要改变值,
        
//但是像现在这样写报错,要怎么写才不会报错
        for(i;i<=num;i++) {
            for(j=2;j<i&&i%j!=0;j++)
                ;
            if(i==j)
                break;
        }
        if(num%i==0) {
            num/=i;
            System.out.print("*"+i);
        }
        else
            i++;//i值在这里改变
    }
   
}
}

2018-03-06 12:22
疯狂的小a
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:14
帖 子:348
专家分:1380
注 册:2018-2-6
  得分:20 
package com.xiaoa.demo;

import java.util.Scanner;

public class IntegerFactorization {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("num=");
        try {
            int num = sc.nextInt();
            for (int i = 2; i < num; i++) {
                while (num % i == 0) {
                    System.out.println(i);
                    num = num / i;
                }
            }
            if (num > 1) {
                System.out.println(num);
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally {
            //关闭资源
            sc.close();
        }
    }
}

假如人生没有梦想,和咸鱼有什么区别!
2018-03-06 14:09
疯狂的小a
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:14
帖 子:348
专家分:1380
注 册:2018-2-6
  得分:0 
程序代码:
package com.xiaoa.demo;

import java.util.Scanner;

public class IntegerFactorization {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("num=");
        try {
            int num = sc.nextInt();
            for (int i = 2; i < num; i++) {
                while (num % i == 0) {
                    System.out.println(i);
                    num = num / i;
                }
            }
            if (num > 1) {
                System.out.println(num);
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally {
            //关闭资源
            sc.close();
        }
    }
}

假如人生没有梦想,和咸鱼有什么区别!
2018-03-06 14:09
丘山君
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:87
专家分:154
注 册:2017-11-15
  得分:0 
回复 3楼 疯狂的小a
谢谢,你的代码比我的好太多了。
但我还是想问下为什么前面定义过,但是在for循环时不能直接用,要用还要再给赋值
改为for(i=2;i<j;i++)就不报错。
谢谢
2018-03-06 16:28
疯狂的小a
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:14
帖 子:348
专家分:1380
注 册:2018-2-6
  得分:0 
程序代码:
package com.xiaoa.demo;

import java.util.Scanner;

public class IntegerFactorization {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.print("num=");
        try {
            int num = sc.nextInt();
            int i=2;
            for (; i < num; i++) {
                while (num % i == 0) {
                    System.out.println(i);
                    num = num / i;
                }
            }
            if (num > 1) {
                System.out.println(num);
            }
        }catch (Exception e) {
            e.printStackTrace();
        }finally {
            //关闭资源
            sc.close();
        }
    }
}
你可以选择不写,for括号里面第一个位置是一个声明.

假如人生没有梦想,和咸鱼有什么区别!
2018-03-06 16:48
疯狂的小a
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:14
帖 子:348
专家分:1380
注 册:2018-2-6
  得分:0 
回复 4楼 丘山君
这个位置,就相当于拿出来写的.int i 可以 int i;i=2可以,但是i;这个当然报错.不要在乎这些细节,写多了就明白了.

假如人生没有梦想,和咸鱼有什么区别!
2018-03-06 17:05
丘山君
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:87
专家分:154
注 册:2017-11-15
  得分:0 
回复 6楼 疯狂的小a
谢谢。
2018-03-07 16:47
桃花岛主丶
Rank: 2
等 级:论坛游民
威 望:3
帖 子:26
专家分:58
注 册:2018-3-20
  得分:0 
你们写的try  catch  还没学到 我只能写这个:
public class WanWan01 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入整数来分解质因数:");
        int num=sc.nextInt();
        System.out.print(num+"=");
        for (int i = 2; i < 10; i++) {
            if (num%i==0) {
                num/=i;
                System.out.print(i+"*");
            }
            if (i==9) {
                System.out.print(num);
            }
        }
    }
}
2018-03-20 00:43







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

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