1001n的阶乘乘+137是素数吗

阶乘数未尾零的个数
n!未尾共有多少个零?编制程序对于n=100,解决上述问题。设n!素因子表示中素数p的幂为Pof(n,p) ,则Pof(n,p)=[n/p]+[n/p^2]+&&显然Pof(n,5)& Pof(n,2)所以,n!未尾零的个数为Pof(n,5)。例如,Pof(100,5)=[100/5]+[100/25]=20+4=24Pof(1000,5)=[1000/5]+[1000/25]+[]+[0+40+8+1=249Pof(10000,5)=[10000/5]+[10000/25]+[]+[]+[]=+16+3=2499注意到[[n/p^k]/p]=[n/p^(k+1)],计算pof(n,p)的程序为:int pof(int n, int p){&&& int pow=0;&&& while (n & 0)&&& {&&&&&&& n = n /&&&&&&& pow +=&&& }&&&}~~~~~~~~~~~~~~~~~~~~~~~~~~~~~计算pof(n,p)的公式pof(n,p)有下面的计算公式:pof(n,p)=(n-sod(n,p))/(p-1)sod(n,p)表示n的p进制表示的数字和。证明:设n=(b[k-1]b[k-2]&b[1]b[0])_p=b[k-1]p^(k-1)+b[k-2]p^(k-2)+&+b[1]p+b[0][n/p]= b[k-1]p^(k-2)+b[k-2]p^(k-3)+&+b[2]p+b[1][n/p^2]= b[k-1]p^(k-3)+b[k-2]p^(k-4)+&+b[2]&&[n/p^(k-1)]= b[k-1]从而,pof(n,p)=[n/p]+[n/p^2]+&&=(p^(k-2)+p^(k-3)+&+1)b[k-1]+(p^(k-3)+p^(k-4)+&+1)b[k-2]+&&+(p+1)b[2]+b[1]=(p^(k-1)-1)b[k-1]/(p-1)+(p^(k-2)-1)b[k-2]/(p-1)+&+(p^2-1)b[2]/(p-1)+(p-1)b[1]/(p-1)=(p^(k-1)b[k-1]+p^(k-2)b[k-2]+&+pb[1]+b[0]-b[k-1]-b[k-2]-&-b[1]-b[0])/(p-1)=(n-sod(n,p))/(p-1)例如,(1) 100=20*5+0,20=4*5+0,从而100=(400)_5,pof(100,5)=(100-sod(400))/4=24(2) +0,200=40*5+0,40=8*5+0,8=1*5+3,从而)_5,pof(1000,5)=(1000-sod
(13000))/4=249(3) *5+0,+0,400=80*5+0,80=16*5+0,16=3*5+1,从而1)_5,
pof(10000,5)=(10000-sod(310000))/4=9(4) +3,399=79*5+4,79=15*5+4,15=3*5+0,从而)_5,pof(1998,5)=(1998-
sod(30443))/4=(=~~~~~~~~~~~~~~~~~~~~~~阿拉伯数求一个素数n,使得n!末尾恰有1001个零。这样的素数称为阿拉伯数.由1001=(n-sod(n,5))/4可知n=4004+sod(n,5)&4004n=4005时,pof(4005,5)=[4005/5]+ [4005/25]+ []+ []+ [] =
801+160+32+6+1=1000.对于4005&n&4010,均有pof(n,5)=1000.对于4010&n&4015,均有pof(n,5)=1001.其中4013为素数. 故阿拉伯数为4013.~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~可以进一步考虑在其它进制中n!未尾零的个数的问题
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:38259次
排名:千里之外
原创:35篇"如何用c语言求n的阶乘"的糗事
你可能感兴趣:
糗事百科为大家收集了很多的如何用c语言求n的阶乘的糗事,各种关于如何用c语言求n的阶乘的爆笑经历、尴尬时刻和开心视频,想持续关注如何用c语言求n的阶乘的糗事就收藏本页吧.数学(51)
1189 阶乘分数
题目来源: Spoj
基准时间限制:1 秒 空间限制:131072 KB 分值: 80 难度:5级算法题
1/N! = 1/X + 1/Y,给出N,求满足条件的整数解的数量。例如:N = 2,1/2 = 1/3 + 1/6,1/2 = 1/4 + 1/4。由于数量可能很大,输出Mod 10^9 + 7。
输入一个数N(1 &= N &= 1000000)。
输出解的数量mod 10^9 + 7。
Output示例
XY=N!X+N!Y
两边同时加上N!2
XY-N!X-N!Y+N!2=N!2
(X-N!)(Y-N!)=N!2
之后只要对N!分解质因数即可
把1到N的每个数的质因子都找出来
ans=∑pk|N!num[pk]
AC代码如下:
#include &map&
#include &set&
#include &stack&
#include &queue&
#include &cmath&
#include &string&
#include &vector&
#include &cstdio&
#include &cctype&
#include &cstring&
#include &sstream&
#include &cstdlib&
#include &iostream&
#include &algorithm&
#pragma comment(linker,"/STACK:2400000")
using namespace std;
sigma_size
m+1,r,rt&&1|1
int m=(r+l)&&1
unsigned long long
memset(x,v,sizeof(x))
pair&int,int&
__builtin_popcount(a)
= 0x3f3f3f3f;
const double pi
= acos(-1.0);
const double inf
const double eps
inline void RI(int &x) {
while((c=getchar())&'0' || c&'9');
while((c=getchar())&='0' && c&='9') x=(x&&3)+(x&&1)+c-'0';
bool prime[MAX];
int pr[MAX];
int vis[MAX];
void init(){
mem(prime,0);tot=0;
for(int i=2;i&MAX;i++){
if(!prime[i]) pr[tot++]=i;
for(int j=0;j&tot&&pr[j]*i&MAX;j++){
prime[i*pr[j]]=1;
if(i%pr[j]==0) break;
LL qpow(LL a,LL n){
if(n&1) ans=ans*a%
int main(){
mem(vis,0);
for(int i=1;i&=n;i++){
for(int j=0;j&tot&&pr[j]*pr[j]&=k;j++){
if(k%pr[j]==0){
while(k%pr[j]==0){
vis[pr[j]]+=2;
if(k!=1) vis[k]+=2;
for(int i=0;i&=1000000;i++){
ans=ans*(vis[i]+1)%
cout&&(ans+1)*qpow(2LL,mod-2)%mod&&
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:119427次
积分:4229
积分:4229
排名:第7181名
原创:314篇
评论:45条
(1)(1)(25)(52)(37)(33)(8)(35)(11)(2)(3)(2)(2)(3)(3)(5)(10)(15)(1)(1)(9)(27)(14)(19)C语言_三种方法求阶乘_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
C语言_三种方法求阶乘
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩2页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢}

我要回帖

更多关于 0的阶乘 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信