SP12304

题目传送门

简述题目:

题目要求找出满足条件 σ(i)=n最小整数 i,其中 σ(i) 表示 i 的所有正因子的和。

解题思路:

  • 首先定义一个函数 Suum(i),用于计算 i 的所有正因子的和。在函数内部,使用一个循环遍历 i所有可能因子。对于每一个因子 i,如果 i 能够整除 n,那么将 i 加到用来存储的 sum 上,并将 n 除以 i 得到的商加到 sum 上。注意:除数和被除数不能相同
  • 接下来定义一个函数 minsum(n),用于找到满足条件的最小整数 i。初始化 i1,然后进行如下步骤:
  1. 检查 Suum(i) 是否等于 n,如果相等,则返回当前的 i
  2. 如果 i 大于 n,说明没有满足条件的 i,跳出循环。
  3. 否则,i 自增 1,继续下一轮循环。

主要知识:

这个题目主要用到了数学知识中的因子和的概念,以及循环条件语句的使用。

Code:

#include <iostream>
using namespace std;

int Suum(long long n) {
    long long sum = 0;
    for (int i = 1; i * i <= n; i++) {
        if (n % i == 0) {
            sum += i;
            if (i != (n/i)) {
                sum += (n/i);
            }
        }
    }
    return sum;
}

int minsum(long long n) {
    long long i = 1;
    while (true) {
        if (Suum(i) == n) {
            return i;
        }
        if (i > n) {
            break;
        }
        i++;
    }
    return -1;
}

int main() {
    int T;
    cin >> T;
    
    while (T--) {
        long long n;
        cin >> n;
        
        long long ans = minsum(n);
        cout << ans << endl;
    }
    
    return 0;
}
posted @   To_Carpe_Diem  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
· 【杂谈】分布式事务——高大上的无用知识?
点击右上角即可分享
微信分享提示