c语言阶乘分解成素因子,阶乘的素因子分解 51nod 1189
对 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相关推荐
- c语言偶数分解成两个素数,如何用C语言验证2000以内的哥德巴赫猜想,对于任何大于4的偶数均可以分解为两个素数之和....
题目: 如何用C语言验证2000以内的哥德巴赫猜想,对于任何大于4的偶数均可以分解为两个素数之和. 我是大一新生,代码不能太复杂 解答: //首先生成质数表,然后双重循环输出2000以内所有偶数的两个 ...
- 整数n分解成素数乘积c语言,用C语言和汇编语言实现将1个整数分解成几个素数的乘积...
任何1个大于2的整数都可以分解成几个素数的乘积.将1个整数分解成几个素数的乘积是个热门话题. 经常有人问到.本文试图用C语言和32位X86汇编语言给出一个比较好的实现.希望对c语言学习者和 汇编语言学 ...
- C语言入门——计算n的阶乘
目录 一.问题 二.问题分析 三.代码实现 四.运行结果 一.问题 通过c语言编程计算n的阶乘. 二.问题分析 1.首先明确n的阶乘在数学中怎么算:1*2*--*(n-1)*n = n! 2.怎么用c ...
- 求和1的阶乘加到10阶乘 (c语言)
把求一个数的阶乘写成自定义函数 在main 函数中进行求和就可以 //计算1的阶乘加到10的阶乘 #include <stdio.h> #include <stdlib.h> ...
- c语言程序设计阶乘输出,C语言编写10的阶乘,用C语言编程求10的阶乘
导航:网站首页 > C语言编写10的阶乘,用C语言编程求10的阶乘 C语言编写10的阶乘,用C语言编程求10的阶乘 匿名网友: 思路:先定义一个函数求一个数的阶乘,接着依次从1到10调用该函数就 ...
- 合数分解质数c语言算法,合数分解成质数之和问题探究
合数分解成质数之和问题探究 1.将一个合数分解成多个质数,使分解的各个质数均不等.它们的和等于该合数,且它们中最大的质数最小 算法:DP,背包问题,复杂度约为O( (N/10)^2 ) 程序代码:#i ...
- 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方法二 ...
- C语言 递归求n的阶乘和
思路:定义一个fun函数来求n的阶乘,主函数中用for循环来对阶乘求和.fun函数使用递归,每次调用自己,求出阶乘. #include<stdio.h> int fun(int n) {i ...
- C语言实现,阶乘和变式阶乘例1+2的阶乘+3的阶乘....详解(*算法*)
阶乘算法 分为普通阶乘及,变式阶乘,(1的阶乘+2的阶乘+3的阶乘-) 文章目录 阶乘算法 前言 一.普通阶乘算法 二 ,阶乘递归函数 三.变式阶乘 阶乘优化 总结 前言 普通阶乘例如要求出4的阶乘 ...
最新文章
- 中国研究的超级系统计算机,学习电脑 - Book3 - V1.30 - 超级系统恢复
- pwnable input2 之 write up
- VTK:3DArray用法实战
- memset()函数的赋值问题
- Android中WebService的应用
- Nexus 3.31.1 maven 私服 仓库配置篇 linux
- 【布莱克智讯之声公众号】 精彩图文分类导航
- Java——类的继承
- 西洋的AI作曲家,发布了一张中国风音乐专辑
- Nginx常用命令介绍
- zabbix监控之模板使用、网络发现及邮件报警功能
- FL Studio 12是什么软件?Mac音乐制作软件推荐FL Studio 12 for Mac!
- BeanUtils工具
- java语言jsp技术_JavaWeb:JSP技术基础
- dp和px,那些不得不吐槽的故事——Android平台图片文字元素单位浅析
- 在Linux 中安装cmus 用命令行中玩转音乐库
- 全面讲解光纤、光模块、光纤交换机、光模块组网设计与案例
- 稻米之缘农耕稻作文化 国稻种芯-万祥军:影响中国历史走向?
- java.util.MissingResourceException: Can‘t find resource for bundle java.util.PropertyResourceBundle
- 推荐10部最有影响力的韩剧,如未上榜的请留言下期推荐
热门文章
- 关于某些 Visual Studio Code 扩展程序无法在浏览器中运行的原因
- 如何自动完成登录 SAP BTP workflow(工作流) 管理应用 Launchpad 所需的设置
- 给Angular初学者介绍一个非常方便的例子学习网站
- ABAP 740里的新语法 - LET表达式
- ant target间的dependency
- JSP include指令和include动作的区别
- why SpringComponentScanServer is needed
- 如何查看SAP云平台哪些地域支持哪些服务
- Fiori offline support : overrideRefreshHandling and injectRefreshList
- SAP成都研究院的小伙伴们庆祝公司再次获得2019年最佳雇主的场景