杭电1492

题意:求给定的humble number有多少个因数?(humble number:质因子只有2,3,5,7的整数)

Analyse:
用数组pd[4](prime divisor)记录质因数2,3,5,7的次数。n的因数都可表示为n=2^pd[0]*3^pd[1]*5^pd[5]*7^pd[3],只要有一个指数不与对应底数的指数相等,两个质因数就是不相等的。因此,题目的意思就是求2,3,5,7的指数的组合。(注意指数可以为0)因此因数个数为(pd[0]+1)*(pd[1]+1)*(pd[2]+1)*(pd[3]+1)。
View Code
 1 #include<stdio.h>
2 main()
3 {
4 __int64 n;
5 __int64 count;
6 __int64 pd[4];//2,3,5,7质因数个数
7 while(scanf("%I64d",&n)&&n)
8 {
9 for(pd[0]=0;n%2==0;pd[0]++,n/=2);
10 for(pd[1]=0;n%3==0;pd[1]++,n/=3);
11 for(pd[2]=0;n%5==0;pd[2]++,n/=5);
12 for(pd[3]=0;n%7==0;pd[3]++,n/=7);
13 count=(pd[0]+1)*(pd[1]+1)*(pd[2]+1)*(pd[3]+1);
14 printf("%I64d\n",count);
15 }
16 }

转载于:https://www.cnblogs.com/ZShogg/archive/2012/04/05/2433019.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值