文章

59

粉丝

0

获赞

18

访问

3.4k

头像
最大素因子 题解(素数筛):
P1464 西安电子科技大学机试题
发布于2025年8月9日 18:31
阅读数 54

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

// 素数筛
const int maxn = 1000000 + 5;
int prime[maxn];
void getPrime(){
	memset(prime, 0, sizeof(prime));
	for(int i = 2; i <= maxn; i ++){
		if(prime[i] == 0) prime[++ prime[0]] = i;
		for(int j = 1; j <= prime[0] && i * prime[j] <= maxn; j ++){
			prime[i * prime[j]] = 1;
			if(i % prime[j] == 0) break;
		}
	}
}


// 从字符串中提取数字
int getNum(char *s){
	int res = 0;
	for(int i = 0; i < strlen(s); i ++){
		if(isdigit(s[i])){ res *= 10; res += (s[i] - '0');}
	}
	return res;
}

// 求最大素因子
int maxP(int num){
	int res = 0;
	for(int i = 1; prime[i] <= num; i ++){
		int p = prime[i];
		if(num % p == 0) res = p;
	}
	return res;
}

int main(){
	
	getPrime();
	int n; cin >> n;
	while(n --){
		char s[105];
		cin >> s;
		
		cout << maxP(getNum(s)) << endl;
		
	}
	
	return 0;
}

 

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发