/*循环变量从1--1000
定义变量s=0 保存i的因子值和 初始值为0
定义循环变量j 从1到i-1 若i能整除j 则j是因子,s=s+j
循环结束后,若s的值等于i
则输出变量i=1
循环变量k从2到i-1
若i能整除k 则k是因子 输出+k
输出回车
解释:
外层循环执行1000次,每次做三件事
求出因子值和 判断 是否为因子 如果是因子(能整除)就叠加
判断s的因子值和是否为i
输出
*/
#include<iostream>
using namespace std;
int main()
{
int i,s,j,k; //外层循环最大数 求和数 内层循环整除数 输出数
for(i=1;i<=1000;i++)
{
s=0; //不要再最前面设置s=0要在每次循环以后 都让s为0 重新开始
for(j=1;j<i;j++)
{
if(i%j==0)
s=s+j;
//循环结束后 s的值等于i 在进行输出
}
if(s==i)
{
cout<<i<<"=1";
for(k=2;k<i;k++) //注意k是从2开始输出
{
if(i%k==0)
cout<<"+"<<k;
}
cout<<endl; //循环输出一次后 换行
}
}
return 0;
}