当前位置:首页 > 题解目录 > 正文内容

【题解】最大平方因子

亿万年的星光1年前 (2024-07-23)题解目录2162

【题目描述】

给定一个整数 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;
}


扫描二维码推送至手机访问。

版权声明:本文由青少年编程知识记录发布,如需转载请注明出处。

分享给朋友:

相关文章

【题解】自动晾衣机

【题目描述】有一个环形可以晾衣服的衣架,有若干个夹子组成,它可以晾不同长度的衣服(占用多个夹子),并且每两件衣服中间要有一个空夹子作为空位,下面需要依次晾干几件长度不一的衣服,请你给出某个夹子的使用情...

【题解】柠檬水找零

【题目描述】在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你...

素数个数

【题目描述】编程求2~n(n为大于2的正整数)中有多少个素数。【输入描述】输入n (2<= n <=50000)【输出描述】素数个数【输入样例】10【输出样例】4#include<i...

【题解】最长上升子序列

【题目描述】一个数的序列bi,当b1<b2<...<bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1,a2,...,aN),我们可以得到一些上升的子序列(ai1,ai2,...

【题解—深搜】马走日

【题解—深搜】马走日

【题目描述】马在中国象棋以日字形规则移动。请编写一段程序,给定n×m大小的棋盘,以及马的初始位置(x,y),要求不能重复经过棋盘上的同一个点,计算马可以有多少途径遍历棋盘上的所有点。【输入】第一行为整...

【题解】钟神赛车

【题目描述】钟神近来编码劳累,想骑车风光一番,于是找某君骑自行车比赛。已知某君和钟神的每辆自行车的速度,钟神赢一场得50银两银子,输一场赔50银两,平局不挣也不赔。钟神可以随意安排高中低档自行车的出场...