1207.质因数的个数

题目描述:

求正整数N(N>1)的质因数的个数。

相同的质因数需要重复计算。如120=2*2*2*3*5,共有5个质因数。

输入:

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

输出:

对于每组数据,输出N的质因数的个数。

样例输入:
120
样例输出:
5
提示:

注意:1不是N的质因数;若N为质数,N是N的质因数。

#include<iostream>
using namespace std;

bool mark[100001];
int prime[100001];
int primesize;
void init()
{
    int i,j;
    primesize=0;
    for(i=2;i<=100000;i++)
    {
        if(mark[i]==true) continue;
        prime[primesize++]=i;
        if(i>=1000) continue;
        for(j=i*i;j<=100000;j+=i)
        {
            mark[j]=true;
        }
    }
}

int main()
{
    init();
    int n,i;
    while(cin>>n)
    {
        int num=0;
        do
        {
        for(i=0;i<primesize;i++)
        {
            if(n%prime[i]==0)
            {
            n=n/prime[i];
            num++;
            }
        }
        }while(n>1);
        cout<<num<<endl;
    }
    return 0;
}

原文地址:https://www.cnblogs.com/bernieloveslife/p/9736541.html

时间: 2024-09-29 01:04:08

1207.质因数的个数的相关文章

九度OJ 1207 质因数的个数 (筛素数,勉强AC)

1 秒 内存限制:32 兆 特殊判题:否 提交:4466 解决:1375 题目描述: 求正整数N(N>1)的质因数的个数. 相同的质因数需要重复计算.如120=2*2*2*3*5,共有5个质因数. 输入: 可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9). 输出: 对于每组数据,输出N的质因数的个数. 样例输入: 120 样例输出: 5 提示: 注意:1不是N的质因数:若N为质数,N是N的质因数. 来源: 2007年清华大学计算机研究生机试真题 若测试完2到10

题目1207:质因数的个数

时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:7367 解决:2406 题目描述: 求正整数N(N>1)的质因数的个数. 相同的质因数需要重复计算.如120=2*2*2*3*5,共有5个质因数. 输入: 可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9). 输出: 对于每组数据,输出N的质因数的个数. 样例输入: 120 样例输出: 5 提示: 注意:1不是N的质因数:若N为质数,N是N的质因数. #include <iostream> #

九度oj 题目1207:质因数的个数

题目描述: 求正整数N(N>1)的质因数的个数. 相同的质因数需要重复计算.如120=2*2*2*3*5,共有5个质因数. 输入: 可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9). 输出: 对于每组数据,输出N的质因数的个数. 样例输入: 120 样例输出: 5 提示: 注意:1不是N的质因数:若N为质数,N是N的质因数. 这个题着实费了我一番功夫,开始一直在纠结需要去判断每一个被除数是不是质数,需要一个个的去遍历质数才能得到答案,但每一次这样判断结果必然超时

求 质因数的个数

如何 快速求一个数的质因数的个数 for(int i = 1; i <= 1000000; i++) cnt[i] = 2; cnt[1] = 1; for(int i = 2; i <= 1000000; i++){ for(int j = i+i; j <= 1000000; j += i) cnt[j]++; } 原文地址:https://www.cnblogs.com/ccut-ry/p/8409965.html

快速求出n!的质因数的个数

一般做组合数的题目都要进行质因数的分解,我们一般是for循环对每个数进行质因数分解,大多数情况都不会超时,但极少数的情况下,题目会不允许这样的做法,所以我们需要学会一种更快的方法来求质因数. 我们一般的方法是对每个数进行质因数分解: inline void calc(int x,int val) { int xx=x; for(int i=2;i*i<=xx;i++) { while(x%i==0)//不断进行除法,找出多少的当前的质数 { c[i]+=val;x/=i; } if(x==1)b

快速求出n!质因数的个数

一般做组合数的题目都要进行质因数的分解,我们一般是for循环对每个数进行质因数分解,大多数情况都不会超时,但极少数的情况下,题目会不允许这样的做法,所以我们需要学会一种更快的方法来求质因数. 我们一般的方法是对每个数进行质因数分解: 1 inline void calc(int x) 2 { 3 int xx=x; 4 for(int i=2;i*i<=xx;i++) 5 { 6 while(x%i==0)//不断进行除法,找出多少的当前的质数 7 { 8 c[i]++;x/=i; 9 } 10

质数个数

质数个数 题目描述 求正整数N(N>1)的质因数的个数. 相同的质因数需要重复计算.如120=2*2*2*3*5,共有5个质因数. 输入描述: 可能有多组测试数据,每组测试数据的输入是一个正整数N,(1<N<10^9). 输出描述: 对于每组数据,输出N的质因数的个数. 输入例子: 120 输出例子: 5 结构优质代码: #include<iostream> #include<cmath> using namespace std; int main() {    

数论 - Miller_Rabin素数测试 + pollard_rho算法分解质因数 ---- poj 1811 : Prime Test

Prime Test Time Limit: 6000MS   Memory Limit: 65536K Total Submissions: 29046   Accepted: 7342 Case Time Limit: 4000MS Description Given a big integer number, you are required to find out whether it's a prime number. Input The first line contains the

UVa1635 - Irrelevant Elements(质因数分解)

Young cryptoanalyst Georgie is investigating different schemes of generating random integer numbers ranging from 0 to m - 1. He thinks that standard random number generators are not good enough, so he has invented his own scheme that is intended to b