题目56 阶乘因式分解(一)

阶乘因式分解(一)

时间限制: 3000 ms | 内存限制: 65535 KB
难度: 2
描述

给定两个数m,n,其中m是一个素数。

将n(0<=n<=10000)的阶乘分解质因数,求其中有多少个m。

输入
第一行是一个整数s(0<s<=100),表示测试数据的组数
随后的s行, 每行有两个整数n,m。
输出
输出m的个数。
样例输入
2
100 5
16 2
样例输出
24
15
我也是刚刚知道一点c++,就用了,不会的就看看算法也能看懂。
 
 
#include<iostream>
using namespace std;
int main()
{
	int n,m,t,i,a[10001];
	cin>>t;
	while(t--)
	{		
		cin>>m>>n;
		for(i=1;i<=m;i++)
		{
			a[i]=i;
		}
		int cnt=0;
		for(i=n;i<=m;i+=n)      //这里用到i+=n很省时间 
		{
			while(a[i]%n==0)
			{
				++cnt;
				a[i]/=n;
			}
		}
		cout<<cnt<<endl;					
	}
	return 0;
}

你可能感兴趣的:(题目56 阶乘因式分解(一))