大家好我是小黄呀
冲冲冲
题目链接
题目大意
有多组数据,每组给定一行字符串序列,从左到右将其中所有的数字字符取出拼接成一个无符号整数,计算出该整数的最大素因子
最大素因子 =
最大素因子
思路分析
- 从一行字符串序列中取出数字,用到函数
isdigit(str)
,该函数是在头文件cctype
中,其中还有其他函数,例如:isalnum()
判断字母或数字;isalpha()
判断字母。 - 若判断的字符为数字,则存入到
vector<int> v
数组中,但是要注意有一个转换过程s[i]-'0'
- 求最大素因子,在标准素数筛的基础上加上一个比较过程,求出最大的素数。
具体代码
#include<bits/stdc++.h>
using namespace std;
int sushu(int a){
int max = 0;
for(int i = 2;i*i <= a;i++){
while(a%i==0){
if(i>max)
max = i;
a/=i;
}
}
return a>max?a:max;
}
int main()
{
int t;
cin>>t;
for(int i=0;i<t;i++)
{
string s;
cin>>s;
int len=s.size();
vector<int> v;
for(int j=0;j<len;j++)
{
if(isdigit(s[j]))
v.push_back(s[j]-'0');
}
if(v.empty())
cout<<"0"<<endl;
else
{
int len1=v.size();
int cnt=0;
for(int j=0;j<len1;j++)
{
int temp=v[j];
cnt = cnt*10+temp;
}
long long ans = sushu(cnt);
cout<<ans<<endl;
}
}
return 0;
}