解题思路:
两点需要注意:
1.输入的数如果本身是质数那么该数本身就是其最大质因子。
2.还有一点比较坑人就是如果输入的数中有多个数的最大质因子都是最大,即答案有多个,那么要选取最后一个数作为答案,否则错误。
参考代码:
#include<iostream> #include<cmath> using namespace std; int is_prime(int m) //判断是否是质数 { if(m<=1) return 0; int k=floor(sqrt(m)+0.5); for(int i=2;i<=k;i++) if(m%i==0) return 0; return 1; } int f(int n) //求一个数的最大质因数 { int max=0; for(int i=2;i<=n;i++) if(n%i==0&&is_prime(i)==1) { if(i>max) max=i; } return max; } int main() { int n,max=0,m=0; cin>>n; int a[n]; for(int i=0;i<n;i++) cin>>a[i]; for(int i=0;i<n;i++) { if(f(a[i])>=max) { max=f(a[i]); m=a[i]; } } cout<<m; return 0; }
0.0分
1 人评分
大小写转换 (C语言代码)浏览:839 |
printf基础练习2 (C语言代码)浏览:305 |
【计算两点间的距离】 (C语言代码)浏览:1473 |
Hello, world! (C语言代码)浏览:808 |
良心推荐——>题解1049:C语言程序设计教程(第三版)课后习题11.1 (C语言描述——简单明了,时间复杂度低)浏览:1273 |
小O的乘积 (C语言代码)浏览:1009 |
1392题解(大数相加)浏览:601 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:440 |
孤独的骑士 (C语言代码)浏览:1360 |
1073题解浏览:618 |