Java 质数因子

描述

功能:输入一个正整数,按照从小到大的顺序输出它的所有质因子(重复的也要列举)(如180的质因子为2 2 3 3 5 )

数据范围: 1≤n≤2×109+14 1≤n≤2×109+14 

输入描述:

输入一个整数

输出描述:

按照从小到大的顺序输出它的所有质数的因子,以空格隔开。

示例1

输入:

180

输出:

2 2 3 3 5

思路1: 设定i=2,i一直递增,当N除以i余数为0的时候,N设定为N/i

质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。

质因子牵涉到两个概念:因子和质数;
因子,又叫“因数”或“约数”,如果整数a能被整数b整除,那就有一个整数q,使得 a=bq,则b和q都称为a的一个因子.15=3乘以5,所以3和5都是15的因子;8=2乘以4,那么2和4 就是8的因子。

质数,又叫“素数”,在大于1的自然数中,仅有1和本身为自己的因子的数叫素数。7 只有1、7这两个因子,所以是素数。8有1、2、4、8四个因子,除了1、8,还有2和4,所以就不是素数。

设定i=2,i一直递增,当N除以i余数为0的时候,N设定为N/i,否则i++,直到i>N,这样找到的所有N除以i余数为0的i就是N的所有的质数因子。

Java代码

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextLong()) {
            int num = scanner.nextInt();
            fun(num);
        }
    }
 
    private static void fun(int num) {
        for (int i = 2; i <= Math.sqrt(num); i++) {
           while (num % i == 0) {
                System.out.print(i + " ");
                num /= i;
            }
        }
        if (num > 1) {
          //最后也要空格
          System.out.print(num+" ");
        }
    }
 
}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值