说的没错,因子当然能被这个数整除啦!
奋斗改变一切!!
[CODE]
#include "stdio.h"
int Calculate(int k)
{
int i,sum=0;
for(i=1;i<k;i++) /*这里计算的因子不包括它自己*/
if(k%i==0)
sum+=i;
return k==sum?1:0;
}
int main()
{
int j;
for(j=1;j<1000;j++)
if( Calculate(j) )
printf("%4d\t",j);
return 0;
}
[/CODE]
#include "stdio.h"
#include "math.h"
int Calculate(int k)
{
int i,st,num,sum=1;
st=(int)sqrt(k);
for(i=2;i<st+1;i++)
if(k%i==0)
{
num=k/i;
sum+=i+num;
}
return k==sum?1:0;
}
int main()
{
int j;
for(j=2;j<1000;j++)
if( Calculate(j) )
printf("%4d\t",j);
getch();
return 0;
}
稍微改了版主老大的程序,运行应该更快些
#include "stdio.h"
#include "conio.h"
int panduan(int i)
{
int j,sum=0;
for(j=1;j<i;j++)
if(i%j==0)
{
sum+=j;
}
if(sum==i)
return 1;
else
return 0;
}
void main()
{
int j;
for(j=3;j<=100;j++)
if(panduan(j))
printf("%4d\t",j);
getch();
}
#include<stdio.h>
int isPrime(long n,long i)
{
return n<i*i?1:n%i?isPrime(n,i+2):0;
}
int main(void)
{
long x,y;
for(x=2,y=4;x*y>0;x=y,y+=y)
if(isPrime(y-1,3))
printf("%ld\n",x*(y-1));
return 0;
}
楼上的太强了!小弟佩服!