题解 | #Problem C#

Problem C

http://www.nowcoder.com/practice/2a05dcaa4cde4db989443f206ee3e5c5

采用递归思路获取 最大质数因子

#include<iostream>
#include<math.h>
#include<algorithm>
#include<string>
#include<iomanip>
#define MAX 128
using namespace std;

//获取数字
string get_number(string ss) {
	string res;
	for (int i = 0; i < ss.size(); i++) {
		if (ss[i] >= '0'&&ss[i] <= '9') {
			res += ss[i];
		}
	}
	return res;
	
}
//获取最大素数因子
int get_prime_factor(int a) {
	//cout << "执行" << endl;
	if (a == 1 || a == 2)return a;
	for (int i = 2; i <= sqrt(a); i++) {
		if (a % i == 0) {
			return max(get_prime_factor(a/i), i);
		}
	}
	return a;
}
int main() {
	//cout << get_prime_factor(28) << endl;
	int n; cin >> n;
	for (int i = 0; i < n; i++) {
		string ss; cin >> ss;
		string s = get_number(ss);
		if (s.size() == 0) {
			cout << 0 << endl;
		}
		else {
			int a = stoi(s);
			int pFactor = get_prime_factor(a);
			cout << pFactor << endl;
		}
	}

	return 0;
}
全部评论

相关推荐

迷茫的大四🐶:都收获五个了,兄弟那还说啥,不用改了,去玩吧
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务