tsinghua-6 质因数个数

就是求一个数的质因数个数,超时n次,束手无策, 查了题解,一秒解决, 喵。

要注意1既不是质数也不是合数。

/**********************
author: yomi
date: 18.3.12
ps:
**********************/
#include <iostream>
#include <cmath>
#include <cstdio>
using namespace std;
/*   TLE -----> 超时原因大概就是还另外判断了是否是素数。
bool isPrime(int n)
{
    if(n == 2)
        return true;
    int t = sqrt(n);
    for(int i=2; i<t+1; i++){
        if(n%i == 0)
            return false;
    }
    return true;
}
int main()
{
    int n;
    while(scanf("%d", &n)!=EOF){
        int cnt = 0;
        int ans = 1;
        while(ans != n){
            for(int i=2; i<=n/ans; i++){
                if(isPrime(i) && (n/ans)%i == 0){
                    ans *= i;
                    cnt++;
                    break;
                }
            }
            //cout << ans << endl;
        }
        printf("%d\n", cnt);
    }
    return 0;
}
*/
int main()
{
    int n;
    int cnt = 0;
    while(cin >> n){
        if(n == 2)
            cnt = 0;
        else
            cnt = 1;
        for(int i=2; i<sqrt(n)+1; i++){
            while(n%i == 0){
                cnt++;
                n /= i;
                //cout << n <<endl;
            }
        }
        cout << cnt << endl;
    }
    return 0;
}
/**
120

**/

原文地址:https://www.cnblogs.com/AbsolutelyPerfect/p/8556115.html

时间: 2024-11-02 23:02:21

tsinghua-6 质因数个数的相关文章

!HDU 5317 求区间里两个数的质因数个数的gcd的最大值-预处理

题意:设一个数i的质因数个数为F(i),现给你一个区间[l~r],求max(F[i],F[j])  数据范围:10^6 分析: 预处理出所有的F[i],O(nlgn),10^6不会超时:然后查询用O(7),查询不能用O(n),因为有多个查询会超时. 区间问题减少查询时间复杂度多半类似一个区间的和用两个前缀和相减的方式,前缀和可以在预处理的时候计算,然后区间查询是用两个前缀和相减就行了.如sum[l~r]=sum[r]-sum[l-1],再比如之前的什么我想不起来一时,想起来加上. 代码: #in

【Foreign】魔法 [组合数][质因数分解]

魔法 Time Limit: 10 Sec  Memory Limit: 256 MB Description Input Output 仅一行一个整数表示答案. Sample Input 4 10 7 2 8 5 Sample Output 2 HINT Source 我们找一下规律,显然发现是就是Σa[i]*C(n-1,i-1).然后问题主要就转化为了怎么快速求组合数C(n,i)在模一个非质数情况下的值. 首先我们先确定一个式子: 然后我们立马想到了一个暴力分解质因数的方法.就是记录所有的(

POJ 3993 Not So Flat After All(质因数)

Not So Flat After All Description Any positive integer v can be written as p1a1*p2a2*...*pnan where pi is a prime number and ai ≥ 0. For example: 24 = 23*31. Pick any two prime numbers p1 and p2 where p1 = p2. Imagine a two dimensional plane where th

[SDOI2008]沙拉公主的困惑

题目描述 大富翁国因为通货膨胀,以及假钞泛滥,政府决定推出一项新的政策:现有钞票编号范围为1到N的阶乘,但是,政府只发行编号与M!互质的钞票.房地产第一大户沙拉公主决定预测一下大富翁国现在所有真钞票的数量.现在,请你帮助沙拉公主解决这个问题,由于可能张数非常大,你只需计算出对R取模后的答案即可.R是一个质数. 输入输出格式 输入格式: 第一行为两个整数T,R.R<=10^9+10,T<=10000,表示该组中测试数据数目,R为模 后面T行,每行一对整数N,M,见题目描述 m<=n 输出格

[蒟蒻修炼计划][模板]μ函数

省队集训看着台上的老师讲了一上午的莫比乌斯反演,整个人都是懵的,因为我看不清黑板和投影!!! 回家后本来想晚上自学完的,却奈何自己是个拖延症患者,只敲了μ函数(说多了都是泪QAQ) 代码的思路如下: 1.算质因数个数时因为有将1算上,所以每次都需要将符号取反: 2.为什么这样做能算出μ(a)=0呢?证明如下(如果有错可以指出,但别打我QAQ): ①先证明:已知a=p1*p2*p3*...*pn*pi(1<=i<=n且p为质数) 则μ(a)=μ(1)μ(p1)+μ(p2)+...μ(n)+μ(p

sg函数与博弈论

这个标题是不是看起来很厉害呢... 我们首先来看一个最简单的游戏.比如我现在有一堆石子,有p个,每次可以取走若干个(不能不取),不能取的人就输了. 现在假设有两个人要玩这个游戏,一个人先手,一个人后手,假设两个人都是足够聪明的AI,那么谁会赢? 显然p≠0时先手赢,他只要全部取完就行了... 我们先不管这个游戏有多傻逼,我们看一看这个游戏所隐含的模型. 比如我们把当前游戏局面抽象成一个点,把这个点往每下一步可以到达的新状态连一个边,这样就形成了一个有向无环图.(如果有环这个游戏就不会结束了) 现

Co-prime(hdu4135)

Co-prime Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 3313    Accepted Submission(s): 1286 Problem Description Given a number N, you are asked to count the number of integers between A and B

poj3904 Sky Code

Sky Code Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 1694   Accepted: 523 Description Stancu likes space travels but he is a poor software developer and will never be able to buy his own spacecraft. That is why he is preparing to ste

能量球

能量球 (enb.pas/c/cpp) 题目描述 sideman 有着一个你们所不知道的秘密.实际上, sideman不是地球人,而是遥远的Gliese 行星的生物.sideman 虽然身在地球,但是时刻盼望着能够回到Gliese 去.终于有一天, sideman得到了几颗蕴含着无数能量的能量球.经过漫长艰苦的研究, sideman 搞清楚了这些能量球的规律.首先,能量球上面有一个正整数N,运用激发手段可以使得能量球上的正整数变为原来的数的一个真因子( A 是B 的一个真因子,等价于B 是A 的