试除法求约数

c++

试除法求约数,复杂度 O(n12)

/*
* 试除法求约数
* 算法概述:
* 给定 n 个正整数 ai,对于每个整数 ai,请你按照从小到大的顺序输出它的所有约数。
*
* 算法较为简单,同样是 O(N^0.5)的复杂度
*/
#include <cstdio>
#include <iostream>
#include <vector>
#include <queue>
#include <cstring>
#include <cmath>
#include <algorithm>
using namespace std;
int n;
void get_all_divisors(int x) {
vector<int> top, bottom;
for (int i = 1; i <= x / i; i ++ ) {
if (x % i == 0) {
if (i * i == x) {
top.push_back(i);
break;
} else {
top.push_back(i);
bottom.push_back(x / i);
}
}
}
printf("%d", top[0]);
for (int i = 1; i < top.size(); i ++ ) {
printf(" %d", top[i]);
}
for (int i = bottom.size() - 1; i >= 0; i -- ) {
printf(" %d", bottom[i]);
}
printf("\n");
}
int main()
{
scanf("%d", &n);
int x;
while (n -- ) {
scanf("%d", &x);
get_all_divisors(x);
}
return 0;
}
posted @   lucky_light  阅读(88)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示