第1个回答 2019-10-16
#include
using
namespace
std;
void
main()
{long
n,i,k;
for(n=1;;n++)//对n从1开始找
{
for(i=1,k=0;i<=n;i++)
/*k用来放n的约数和,i用来求n的约数,从1开始找,一直找到i等于n*/
{
if(n%i==0)k=k+i;
/*从1开始找n的约数,如果n%i==0表示i是n的约数,那么将i的值加到k中*/
}
if(k==3*n+3)
{
cout<
评论
0
0
加载更多
第2个回答 2007-12-15
1+2+3+6=12
6*3+3=21
12≠21
那到底是一个正整数n,它的所有约数之和等于3n+3
还是一个正整数n,它的所有约数之和等于2n
分解质因数
设N=p1^r1*p2^r2*...*pn^rn
则s=(1+p1+p1^2+...+p1^r1)*(1+p2+p1^2+...+p2^r2)*...*(1+pn+pn^2+...+pn^rn)
=(p1^r1-1)/p1-1 * (p2^r2-1)/p2-1 * ... * (pn^rn-1)/pn-1
1+2+3+6=12
6*3+3=21
12≠21
那到底是一个正整数n,它的所有约数之和等于3n+3
还是一个正整数n,它的所有约数之和等于2n
分解质因数
设N=p1^r1*p2^r2*...*pn^rn
则s=(1+p1+p1^2+...+p1^r1)*(1+p2+p1^2+...+p2^r2)*...*(1+pn+pn^2+...+pn^rn)
=(p1^r1-1)/p1-1 * (p2^r2-1)/p2-1 * ... * (pn^rn-1)/pn-1
第3个回答 2007-12-15
#include<iostream>
using namespace std;
void main()
{long n,i,k;
for(n=1;;n++)//对n从1开始找
{
for(i=1,k=0;i<=n;i++)
/*k用来放n的约数和,i用来求n的约数,从1开始找,一直找到i等于n*/
{
if(n%i==0)k=k+i;
/*从1开始找n的约数,如果n%i==0表示i是n的约数,那么将i的值加到k中*/
}
if(k==3*n+3)
{
cout<<n<<endl;
/*检查是否有满足条件的n,有就输出结果,并结束程序的运行*/
break;
}
}
}
没安装C++,盘丢了,校园网的安装程序又太大,我磁盘空间又放不下,如果想知道答案就自己安装一个运行一下就知道了,呵呵如果很大都没有结果输出,那么机器会一直运行下去滴,我没设上限