P2043 质因子分解

题目描述

对N!进行质因子分解。

输入输出格式

输入格式:

 

输入数据仅有一行包含一个正整数N,N<=10000。

 

输出格式:

 

输出数据包含若干行,每行两个正整数p,a,中间用一个空格隔开。表示N!包含a个质因子p,要求按p的值从小到大输出。

 

输入输出样例

输入样例#1: 复制
10
输出样例#1: 复制
2 8
3 4
5 2
7 1

说明

10!=3628800=(2^8)*(3^4)*(5^2)*7

 

哦哟,怎么这么多长得这么像的题啊。。。

全都是质因数质因数。

哦不对,这个是质因子hhh。

 

好喜欢黑尾酱啊,

黑尾酱太漂亮了❤。

 

祝福李诞&&黑尾酱。

 

 

来直接看看代码吧,

我都快晕了。

 

这个题!我大哥说了!:

· 线筛
· 求出1~n每个数的最小质因数
· 然后O(n)枚举统计答案
 
//对N!进行质因子分解。 
#include<iostream>
#include<cstdio>
#include<algorithm>
#include<cmath>
#include<cstring>
using namespace std;

int n,a[10002];

int main()
{
    scanf("%d",&n);
    for(int i=2;i<=n;++i)
    {
        int x=i;                        
        for(int j=2;j<=i;++j)
            while(x%j==0)
            {
                a[j]++;
                x/=j;
            }
    }
    for(int i=1;i<=10000;++i)
        if(a[i])
            printf("%d %d\n",i,a[i]);
    return 0;
 } 
//如果你不开心,那我就把右边这个zz大炸分享给你吧,
//你看,他这么好看,跟个大傻子一样看着你,你还伤心吗?
//一切都会过去的。
//时间时间会给你答案2333

 

 

这几个题,思路都差不多。

 

posted @ 2018-06-11 19:10  孟东行#  阅读(633)  评论(0编辑  收藏  举报