首页 > 试题广场 >

质因数的个数

[编程题]质因数的个数
  • 热度指数:50211 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
求正整数N(N>1)的质因数的个数。 相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。

输入描述:
可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9)。


输出描述:
对于每组数据,输出N的质因数的个数。
示例1

输入

120

输出

5
Java 解法
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()){
            int i = scanner.nextInt();
            int count=0;
            for (int j = 2; j*j<=i ; j++) {
                while (i%j==0){
                    i/=j;
                    count++;
                }
            }
            if (i>1) count++;
            System.out.println(count);
        }
    }
}


编辑于 2020-03-17 16:04:23 回复(0)
package com.zyx.four61_80;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
/**
*@author zyx
*@version
创建时间:2018年12月20日下午11:19:56
*@ClassName 类名称
*@Description 类描述
*/
public class Class65 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            List<Integer> list = new ArrayList<>();
            System.out.println(zxs(n,0));
        }
    }
    public static int zxs(int num,int count){
        for (int i = 2; i < num; i++) {
            if (num % i == 0) {
                int n = num / i;
                return zxs(n,count+1);
            }
        }
        return count+1;
    }
}

发表于 2018-12-20 23:33:22 回复(0)
import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            int n = sc.nextInt();
            int nums = 0;
            for(int i=2;i<=n;i++){
                while(0 == n%i){
                    n = n/i;
                    nums++;
                }
            }
            System.out.println(nums);
        }
    }
}

发表于 2018-08-03 21:26:17 回复(0)
import java.util.Scanner;

/**
 * Created by fhqplzj on 17-1-26 at 下午5:16.
 */
public class My10 {
    private static int getNum(int n) {
        int result = 0;
        while (n != 2) {
            int i = 2;
            while (i * i <= n) {
                if (n % i == 0) {
                    break;
                }
                i++;
            }
            if (n % i == 0) {
                /*合数*/
                result++;
                n /= i;
            } else {
                /*质数*/
                break;
            }
        }
        return result + 1;
    }

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNextInt()) {
            System.out.println(getNum(scanner.nextInt()));
        }
    }
}

发表于 2017-01-26 18:22:45 回复(0)

问题信息

难度:
5条回答 30581浏览

热门推荐

通过挑战的用户

查看代码