文章

8

粉丝

216

获赞

20

访问

67.0k

头像
大整数; 将a拆分成若干个质因子之积,比较阶乘的 2 ~ n 中包含多少个对应的质因子,可得出来最多可以整除 a 的多少次方
推荐阅读
P1284 上海交通大学机试题
发布于2021年5月25日 21:00
阅读数 8.9k

#include<bits/stdc++.h>
using namespace std;

//得到数n的质因子及其个数
void getPrime(vector<int>& factors, int n){
	for(int i=2; i*i<=n; i++){
		while(n % i == 0){
			factors[i]++;
			n /= i;
			if(n <= 1)
				return;
		}
	}
	if(n > 1)
		factors[n]++;
}

int main(){
	int n, a;
	while(cin >> n >> a){
		vector<int> factor_a(1000), factor_n(1000);
		getPrime(factor_a, a);
		//计算阶乘的每一个数的质因子及其个数;并进行个数的累加
		for(int i=2; i<=n; i++)
			getPrime(factor_n, i);
		int k = 1000;
		//看2~n包含多少个对应的质因子
		for(int i=2; i<=a; i++)
			if(factor_a[i])
				k = min(k, factor_n[i]/factor_a[i]);
		cout << k << endl;
	}
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发