关闭

CodeForces 546D (求素因子个数)

2939人阅读 评论(0) 收藏 举报
分类:

/*****************************
   CodeForces 546D
   Author:herongwei
   Created Time: 2016/5/31 13:00:00
   File Name   : main.cpp
给出一个n,n开始是a!/b!,每次用一个x去整除n得到新的n,
最后当n变成1的时候经过了几轮得分就是这个轮数,
要求最大的分数是多少
[solve]
就是一个求整数质因子个数的题目,
阶乘我们不需要算,我们知道在a>b的时候,
b!都约掉了,那么我们只需计算出每个数的质因数有几个,
然后前缀和计算出1~n的质因子之和,
Input
2
3 1
6 3
Output
2
5
*****************************/

#include <bits/stdc++.h>
using namespace std;

typedef long long LL;
const int maxn = 5e6+10;

LL n,m,dp[maxn];

void init()
{
    dp[1]=dp[2]=0;
    for(int i=2; i<maxn; ++i)
    {
        if(!dp[i])
        {
            for(int j=i; j<maxn; j+=i)
            {
                dp[j]=dp[j/i]+1;
            }
        }
    }
    for(int i=2; i<maxn; ++i)
       dp[i]=dp[i]+dp[i-1];
}
int main()
{

    //freopen("1.txt","r",stdin);
    init();
    /*for(int i=0; i<10; ++i)
    {
        cout<<"i= "<<i<<" "<<dp[i]<<endl;
        i= 0 0
        i= 1 0
        i= 2 1
        i= 3 1
        i= 4 2
        i= 5 1
        i= 6 2
        i= 7 1
        i= 8 3
        i= 9 2
    }
    */
    int t;scanf("%d",&t);
    while(t--)
    {
        scanf("%d %d",&n,&m);
        printf("%I64d\n",dp[n]-dp[m]);
    }
    return 0;
}

0
0
查看评论

CodeForces 546D Soldier and Number Game(求素因子+数学+前缀和)

题目链接:click here~~ 【题目大意】 两个整数a, b。求出a, a - 1, a - 2........b + 1这些整数能被拆分成多少个素数相乘,把每个的拆分结果相加起来。例如 a = 6, b = 2. 那么结果=1(3=3) + 2(4=2*2) + 1(5=5) + 2(6=2...
  • u013050857
  • u013050857
  • 2015-05-27 10:01
  • 1399

CodeForces 546D(求质因数的个数)

CodeForces 546D(求质因数的个数) 题目链接 题目大意:求(a!/b!)的所有质因数个数的总和 解题思路:刚开始的时候我是把所有的质数求出来存在一个数组里,对于每一个(a!/b!),求从(b+1)到a的每一个数的质因数的个数,然后再求和,这样在test 4的时候TLE了,然后我就去看了...
  • V32122
  • V32122
  • 2017-08-15 22:51
  • 170

[Codeforces546D]Soldier and Number Game[dp][实现][素数筛][分解整数][数学]

原题链接:[Codeforces546D]Soldier and Number Game[dp][实现][素数筛][分解整数][数学] 题意分析:本题从实质上来说,就是给你两个整数a, b。求出a, a - 1, a - 2........b + 1这些整数能被拆分成多少个素数相乘,把每个的拆分结果...
  • CatGlory
  • CatGlory
  • 2015-05-23 10:11
  • 790

HDU 1299(数论,求n的素因子个数)

Diophantus of Alexandria<br />Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)<br />...
  • xiaotaoqibao
  • xiaotaoqibao
  • 2010-08-01 20:47
  • 3068

求一个数的所有素因子

1不是素数也不是合数!#include<cstdio> #include<cmath> using namespace std; typedef long long LL; const int N=105; int main() { LL a[N],cnt,i,n; ...
  • feng_zhiyu
  • feng_zhiyu
  • 2017-07-26 12:54
  • 252

质数因子(java)

import java.util.*; public class Main{ public static void main(String[] args) { Scanner reader=new Scanner(System.in); long num =reader.ne...
  • liaction
  • liaction
  • 2015-08-14 10:20
  • 479

c++ 正整数拆分成素因子的乘积

#include //设计算法,将某个大于1的数分成素因子的乘积 6=2*3 7=7 8=2*2*2 //1.判断当前数是不是素数,是直接返回 //2.否则,循环直到第一个它能整除的素数,当前数变为除以素数后的商,继续大循环。 //判断一个数是不是素数 #include bool isPrime...
  • wateryouyo
  • wateryouyo
  • 2017-04-19 21:35
  • 1210

算素因子种类数个个数的题目

素因子种类数: 对于一个n,他的素因子总类数 有多少? Facebook Hackercup Round1 Homework题,10pts 运用筛法,然后P[j]=i ->P[j]++ int GetPrimeFactorTypeTimes(int n) { memset(P ...
  • richardzrc
  • richardzrc
  • 2015-06-14 01:13
  • 1338

求一个数的质因子以及欧拉函数

求一个数的质因子以及欧拉函数
  • dongdongdong122
  • dongdongdong122
  • 2016-05-02 17:09
  • 1155

C++分解质因数(获取整数的所有素因子)

算法思想:1、判断是否为素数,如果是,将该数加入素因子集合,返回。2、否则,从2到该数的平方根, 依次将该数分解为两个数的乘积,分别对分解后的数进行判断。3、上述过程递归进行。 C++实现:/* * 获取正整数的所有素因子 * n为正整数 * primes保存所有的素因子,如:8=2*2*...
  • chthq
  • chthq
  • 2014-03-12 13:36
  • 4143
    个人资料
    • 访问:552970次
    • 积分:11637
    • 等级:
    • 排名:第1555名
    • 原创:535篇
    • 转载:24篇
    • 译文:75篇
    • 评论:90条
    自我简介
    nyist计科13级本科,bjtu17级在读硕士,喜爱算法,热爱编程,欢迎一起学习交流。
    博客专栏