因子相加 循环的上限值搞错了,修改如下,供参考:
#include<iostream>
#include<iomanip>
using namespace std;
int main()
{
int a[100];
int n,i,k,s;
for(n=1;n<=1000;n++) {
for(i=1,k=0;i<=n-1;i++)
if(n%i==0) a[k++]=i;
for(i=0,s=0;i<k;i++)s+=a[i];
if(s==n){
cout<<(std::left)<<setw(3)<<n<<"是完数,因子为:";
for(i=0;i<k;i++) cout<<setw(5)<<a[i];
cout<<endl;
}
}
system("pause");
return 0;
}
/* Note:Your choice is C IDE */
#include "stdio.h"
void main()
{
/*
完数:所有的因子相加等于这个数本身
6=1+2+3
*/
int i,j,a,b,c;
printf("1000以内的完数如下:\n");
for(i=6;i<=1000;i++)
{
a=0;
//求i对应的所有的因子
for(j=2;j<=i;j++)
{
if(i%j==0)
{
a+=i/j;
}
}
if(i==a){
//该循环语句的作用就是打印结果
for(j=2;j<=i;j++)
{
if(i%j==0)
{
if(i==j){
printf("%d",i/j);
}else{
printf("%d+",i/j);
}
}
}
printf("=%d\n",i);
}
}
}