对 N! 进行素因子分解:

n! = 1*2*3*4*…*n,因此它一定含有小于等于n 的所有素数我们要对这些素数分别进行处理求出含有多少项。

例如我们求n!含有多少个素因子p

设f[n][p] 表示n!含有多少素因子p;

1*2*3*4*,,,,,*n = ( p*2p*3p*4p*,,,,*(n/p*p) ) * k   其中k不含有素因子p;

(注: n/p*p  =  (int)(n/p) * p)

这里把 n 以内的所有 p 的倍数拿出来,剩下的数组成 k ,很明显 k 里面不含有素因子p

1*2*3*4*…*n = p^(n/p) * (n/p)!  * k ;

已知 k 里面不含有 素因子 p ,那么此时只需要求 (n/p)! 包含的素因子 p 个数,这里又回到了母问题 ,所以用递归解决。

则有递归方程:f[n][p] = n/p + f[n/p][p]

51nod 1189 :

#include

#include

using namespace std;

const long long mod = 2e9+14;//最后ans要除以2 ,所以这里 mod 取 1e9+7 的2倍

bool isprime[1000005];

int prime[100000],tot = 0,temp,n;

long long num;

long long getNum(int n,int p){ //用int可能会超出范围

if(n

return n/p + getNum(n/p,p);

}

int main() {

memset(isprime,true,sizeof(isprime));

for(int i=2;i<=1000;i++) {

if(isprime[i]) prime[tot++] = i;

for(int j=i*i;j<=1000000;j+=i) isprime[j] = false;

}

for(int i=1001;i<=1000000;i++) {

if(isprime[i]) prime[tot++] = i; // prime 存储 1000000 以内素数

}

long long ans;

while(scanf("%d",&n)!=EOF){

ans = 1;

for(int i=0;i

num = getNum(n,prime[i]);

ans *= (2*num+1);

ans %= mod;

}

if(ans%2==1) ans++;

ans %= mod;

printf("%I64d\n",ans/2);

}

}

c语言阶乘分解成素因子,阶乘的素因子分解 51nod 1189相关推荐

  1. c语言偶数分解成两个素数,如何用C语言验证2000以内的哥德巴赫猜想,对于任何大于4的偶数均可以分解为两个素数之和....

    题目: 如何用C语言验证2000以内的哥德巴赫猜想,对于任何大于4的偶数均可以分解为两个素数之和. 我是大一新生,代码不能太复杂 解答: //首先生成质数表,然后双重循环输出2000以内所有偶数的两个 ...

  2. 整数n分解成素数乘积c语言,用C语言和汇编语言实现将1个整数分解成几个素数的乘积...

    任何1个大于2的整数都可以分解成几个素数的乘积.将1个整数分解成几个素数的乘积是个热门话题. 经常有人问到.本文试图用C语言和32位X86汇编语言给出一个比较好的实现.希望对c语言学习者和 汇编语言学 ...

  3. C语言入门——计算n的阶乘

    目录 一.问题 二.问题分析 三.代码实现 四.运行结果 一.问题 通过c语言编程计算n的阶乘. 二.问题分析 1.首先明确n的阶乘在数学中怎么算:1*2*--*(n-1)*n = n! 2.怎么用c ...

  4. 求和1的阶乘加到10阶乘 (c语言)

    把求一个数的阶乘写成自定义函数 在main 函数中进行求和就可以 //计算1的阶乘加到10的阶乘 #include <stdio.h> #include <stdlib.h> ...

  5. c语言程序设计阶乘输出,C语言编写10的阶乘,用C语言编程求10的阶乘

    导航:网站首页 > C语言编写10的阶乘,用C语言编程求10的阶乘 C语言编写10的阶乘,用C语言编程求10的阶乘 匿名网友: 思路:先定义一个函数求一个数的阶乘,接着依次从1到10调用该函数就 ...

  6. 合数分解质数c语言算法,合数分解成质数之和问题探究

    合数分解成质数之和问题探究 1.将一个合数分解成多个质数,使分解的各个质数均不等.它们的和等于该合数,且它们中最大的质数最小 算法:DP,背包问题,复杂度约为O( (N/10)^2 ) 程序代码:#i ...

  7. C语言实现求n的阶乘(n!),阶乘的和。

    目录 一.求n!阶乘 1.1思路 1.2代码实现 1.3运行结果 二.求阶乘的和(1!+2!+3!+4!+.....+n!) 2.1思路 2.2代码实现和运行结果 2.2.1方法一 2.2.2方法二 ...

  8. C语言 递归求n的阶乘和

    思路:定义一个fun函数来求n的阶乘,主函数中用for循环来对阶乘求和.fun函数使用递归,每次调用自己,求出阶乘. #include<stdio.h> int fun(int n) {i ...

  9. C语言实现,阶乘和变式阶乘例1+2的阶乘+3的阶乘....详解(*算法*)

    阶乘算法 分为普通阶乘及,变式阶乘,(1的阶乘+2的阶乘+3的阶乘-) 文章目录 阶乘算法 前言 一.普通阶乘算法 二 ,阶乘递归函数 三.变式阶乘 阶乘优化 总结 前言 普通阶乘例如要求出4的阶乘 ...

最新文章

  1. 中国研究的超级系统计算机,学习电脑 - Book3 - V1.30 - 超级系统恢复
  2. pwnable input2 之 write up
  3. VTK:3DArray用法实战
  4. memset()函数的赋值问题
  5. Android中WebService的应用
  6. Nexus 3.31.1 maven 私服 仓库配置篇 linux
  7. 【布莱克智讯之声公众号】 精彩图文分类导航
  8. Java——类的继承
  9. 西洋的AI作曲家,发布了一张中国风音乐专辑
  10. Nginx常用命令介绍
  11. zabbix监控之模板使用、网络发现及邮件报警功能
  12. FL Studio 12是什么软件?Mac音乐制作软件推荐FL Studio 12 for Mac!
  13. BeanUtils工具
  14. java语言jsp技术_JavaWeb:JSP技术基础
  15. dp和px,那些不得不吐槽的故事——Android平台图片文字元素单位浅析
  16. 在Linux 中安装cmus 用命令行中玩转音乐库
  17. 全面讲解光纤、光模块、光纤交换机、光模块组网设计与案例
  18. 稻米之缘农耕稻作文化 国稻种芯-万祥军:影响中国历史走向?
  19. java.util.MissingResourceException: Can‘t find resource for bundle java.util.PropertyResourceBundle
  20. 推荐10部最有影响力的韩剧,如未上榜的请留言下期推荐

热门文章

  1. 关于某些 Visual Studio Code 扩展程序无法在浏览器中运行的原因
  2. 如何自动完成登录 SAP BTP workflow(工作流) 管理应用 Launchpad 所需的设置
  3. 给Angular初学者介绍一个非常方便的例子学习网站
  4. ABAP 740里的新语法 - LET表达式
  5. ant target间的dependency
  6. JSP include指令和include动作的区别
  7. why SpringComponentScanServer is needed
  8. 如何查看SAP云平台哪些地域支持哪些服务
  9. Fiori offline support : overrideRefreshHandling and injectRefreshList
  10. SAP成都研究院的小伙伴们庆祝公司再次获得2019年最佳雇主的场景