C++ 求正整数s的所有约数的乘积
题目描述输入一个正整数 n,输出 n 的所有约数的乘积 s。
输入
只有一行且只有一个正整数:n
输出
只有一行且只有一个正整数:s
样例
输入 复制
18
输出 复制
5832
提示
【样例说明】
18 的所有约数为:1、2、3、6、9、18 其乘积 s = 1 * 2 * 3 * 6 * 9 * 18 = 5832
【数据规模】
30% 的数据: 1 <= n <= 10^4
70% 的数据: 1 <= n <= 10^8
100% 的数据: 1 <= n <= 10^12
程序代码:
#include <bits/stdc++.h> using namespace std; int n; long long s=1; int main() { cin>>n; for (int i=1; i<=n; i++) { if (n%i==0) s*=i; } cout<<s; return 0; }
上面这段代码只能拿到40分,虽然很明显时间超了......谁能帮忙写个优化点的代码