数论专题 hdu1492
本题题意:给出一个数n(只可能分解为2,3,5,7的素因子),求出其因子数。
代码如下:
#include <cstdio> using namespace std; typedef long long ll; int main() { ll n; while(scanf("%lld",&n)&&n) { ll a[]={1,1,1,1}; while(n%2==0&&n!=1){a[0]++;n/=2;} while(n%3==0&&n!=1){a[1]++;n/=3;} while(n%5==0&&n!=1){a[2]++;n/=5;} while(n%7==0&&n!=1){a[3]++;n/=7;} printf("%lld\n",a[0]*a[1]*a[2]*a[3]); } return 0; }
根据一个数的因子数是其每个素数因子的数量加上1然后相乘,由于该数只有4个素因子,直接统计每个素因子出现的个数就出来了(没有出现过的要记1)。