ACM解题之素矩阵

本文介绍了一种针对素矩形面积的分解算法,通过遍历寻找能够将给定面积分解为两个素数边长的有效方法。利用C++实现,算法确保了在输入一个不超过1亿的正整数时,能够快速准确地找到构成素矩形的两边长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题意:

如果一个矩形的两条边都是素数,则称此矩形为素矩形。本题给出一个素矩形的面积,请计算其两条边的值。有多个测试用例。每个用例占一行,包含一个表示素矩形面积且不超过 108 的正整数。输入直至没有数据为止。对于每个测试用例的素矩形,输出一行两个由小至大排列的整数,分别表示其边长。

解题:

因为题目的输入是个素矩形的面积,所以输入的数肯定只有两种分解(1,面积本身)(素矩形的宽,素矩形的长)。所以,我就用了简单粗暴的方法求解,如下:

c++/accepted/296k/62ms

#include<iostream>
#include<cmath>
using namespace std;
 
int main() {
	int n;
	while (cin >> n)
	{
		for (int i = 2;i < sqrt(n) + 1;i++)  //因为矩形的长必小于或等于宽,所以只要遍历到sqrt(n)即可
		{
			if (n%i == 0)
			{
				cout << i << " " << n / i << endl;
				break;
			}
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值