文章

137

粉丝

0

获赞

304

访问

16.6k

头像
最大素因子 题解:
P1464 西安电子科技大学机试题
发布于2026年2月6日 10:20
阅读数 95

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

int main(){
	int n;
	cin >> n;
	string str;
	for(int i=0;i<n;i++){
		cin >>str;
		// 提取数字
		long long num = 0;
		for (char c : str) {
			if (c >= '0' && c <= '9') {
				num = num * 10 + (c - '0');
			}
		}       
		// 边界条件:没有数字或数字<=1
		if (num <= 1) {
			cout << 0 << endl;
			continue;
		}      
		// 求最大素因子
		long long maxPrime = 1;
		long long temp = num;  // 用临时变量分解,保留原数        
		for (long long i = 2; i * i <= temp; i++) {
			while (temp % i == 0) {
				maxPrime = i;
				temp /= i;
			}
		}       
		// 如果temp>1,说明temp本身是最大素因子
		if (temp > 1) {
			maxPrime = temp;
		}        
		cout << maxPrime << endl;
	}	
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发