D. JLOI2002小明的难题 RE!

最近,小明在学校里学习了因数的有关知识。这天放学后,老师给出了一些正整数,让小明求出每个数的所有因数之和。这本是一道很简单的题目。但是由于老师给出的数字很多,有的数又很大,所以计算起来十分麻烦。

小明是一个懒惰的孩子,于是他找到了你——他的哥哥来帮他解决这个难题。当然这也不能怪他,谁让你总和他吹电脑的神通广大和你的编程技术的高超呢!看来,只能由你来为他解围了。



输入格式:

从键盘上输入一个正整数N(0 < N <= 1e12)。



输出格式:

将N的所有因数之和输出到屏幕上。



样例输入:

8


样例输出:

15


时间限制:

1000



空间限制:

512000

加载最近代码
1
​

1 个赞

你代码咋写的

1 个赞

啊这……
这个不是简单的吗?
代码:

#include <bits/stdc++.h>
using namespace std;
int main(){
	long long n;
	cin >> n;
	long long ans = 0;
	for (long long i = 1; i <= sqrt(n); i++){
		if (n % i == 0){
			if (i * i == n){
				ans += i;
			} else{
				ans += i + n / i;
			}
		}
	}
	cout << ans;
}
1 个赞

你枚举 1\sim \sqrt{N} 的约数

1 个赞

没开long long (悲

1 个赞