已解决 王光裕 资深光能 代码: #include<iostream> #include<cstring> #include <cmath> #include <cstdio> using namespace std; int main() { int n; cin>>n; long sum=0; for(int i=1;i<=n;i++) if(!(n%i)) sum+=i; cout<<sum<<endl; }
已采纳 李祈乐 新手光能 数据范围太大了,一直循环下去可能会超时,这里考虑到:如果n能整除i,也就是i*()==n,n能整除i,i*()就等于n,括号里的数也能被n整除,()表示出来就是n/i,循环从n的平方根开始,即: for(int i=1;i<=sqrt(n);i++) { if(n%i==0) { ans+=i+n/i; }