#include #define N 10 int i,j,s,z; int a[N],a[N][N],b[N-1],c[N-1],t[N][N],m[N][N],x[N]

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/27 17:06:06
#include #define N 10 int i,j,s,z; int a[N],a[N][N],b[N-1],c[N-1],t[N][N],m[N][N],x[N]

#include #define N 10 int i,j,s,z; int a[N],a[N][N],b[N-1],c[N-1],t[N][N],m[N][N],x[N]
#include #define N 10 int i,j,s,z; int a[N],a[N][N],b[N-1],c[N-1],t[N][N],m[N][N],x[N]

#include #define N 10 int i,j,s,z; int a[N],a[N][N],b[N-1],c[N-1],t[N][N],m[N][N],x[N]
这个程序的作用是求出1到1000内的完全数(除本身外所有因数之和等于本身的数)
一下是一些注释
#include<stdio.h>
#include<iostream.h>
#include<math.h>
void main()
{
int i,n,m,k,p=0;
int a[100],b[100]; //a数组记录因数,b数组貌似没有用到
for(n=1;n<=1000;n++) //主循环,判断n是否完全数
{
k=0;m=0;
for(i=2;i<=sqrt(n);i++) //寻找n的因数,因为n的因数是成对的,且有一半小于√n,即若i是n的因数,则n/i也是n的因数,因此只需枚举到√n
{
if(n%i==0)
{
a[k]=i; //记录因数i
k++;
if(i!=sqrt(n)) //记录因数n/i,如果i=√n,则n/i=i,此时不应再记录n/i,否则重复
}
}
for(i=0;i<k;i++) m=m+a[i]; //所有因数相加
if(m+1==n) cout<<n<<" "; //加上一开始没有算的1,如果因数和等于n则输出
}
}
你先设置我最佳答案后,我百度Hii教你.