青少年编程知识记录 codecoming

【题解】最大平方因子

【题目描述】

给定一个整数 n,请找出 n 的最大平方因子。所谓平方因子,就是一个 n 的因子,且是一个完全平方数。最大平方因子就是 n 的所有平方因子中最大的数。

如 12的最大平方因子为 4,81 的最大平方因子为其本身,21 的最大平方因子为 1。

【输入描述】

单个整数表示 n。

【输出描述】

单个整数表示 n 的最大平方因子。

【样例输入1】

12

【样例输出1】

4

【样例输入2】

81

【样例输出2】

81

【样例输入3】

21

【样例输出3】

1

【数据范围】

  • 对于 50% 的数据,1≤n≤10000;

  • 对于 100% 的数据,1≤n≤10,000,000。



【题目分析】

注意完全平方因子的概念即可。完全平方因子,首先是因子,其次是完全平方数,最后是这些中最大的那个。



【参考代码】

#include <bits/stdc++.h>  using namespace std;  int main() {  	int n=0,ans=0;  	int t=0; //临时值  	cin >> n;  	for (int i = 1; i  <= n; i++) {  		if(n%i==0){  			//说明i是因数,  			t = sqrt(i);  			if(t*t==i){  				ans=t*t;  //一直成立,取最后一个  			}  		}  	}  	cout << ans << endl;  	return 0;  }



或者反着来,这样找最大的速度会快一些

#include <bits/stdc++.h>  using namespace std;  int main() {      int n=0,ans=0;      int t=0; //临时值      cin >> n;      for (int i = n; i  >= 1; i--) {          if(n%i==0){              //说明i是因数,              t = sqrt(i);              if(t*t==i){                  ans=t*t;                  break;              }          }      }      cout << ans << endl;      return 0;  }



(adsbygoogle = window.adsbygoogle || []).push({});

作者:亿万年的星光 分类:题解目录 浏览: