这是计算因子相加的程序<pre name="code" class="objc">#include <stdio.h>
int calulate(int n);
int main(void)
{
int n;
int c=20;
for(n=2;n<=10000;++n)
{
// printf("n=%d\n",n);
c=calulate(n);
//printf("c=%d\n\n",c);
if(c){
//printf("1\n");
printf("%d\n",n);
}
}
return 0;
}
int calulate(int n)
{
int i=0;
int sum=0;
int data=-23;
int ok=1;
int max=0;
for(i=2;i<n;i++)
{
//printf("i=%d\n",i);
if(i==max)
{
break;
}
data=n/i;
//printf("data=%d\n",data);
//printf("\n");
if(data*i==n)
{
sum+=(data+i);
if(ok=1)
{
max=data;
ok=0;
}
}
}
sum+=1;
if(sum==n)
{
return 1;
}else{
return 0;
}
}
这是自己写的程序
/*#include <stdio.h>
int main(void)
{
int a,b;
printf("please input a,b:");
scanf("%d,%d",&a,&b);
printf("Output:\n");
if(a>1&&a<b&&b<10000)
{
if(a<=6&&b>>6)
{
puts("6");
}
if(a<=28&&b>=28){
puts("28");
}
if(a<=496&&b>=496)
{
puts("496");
}
if(a>=8128&&b<=8128)
{
puts("8128");
}
if(a<6&&b<6||a>6&&b<28||a>28&&b<496||a>496&&b<8128||a>8128&&a<10000)
{
printf("No answer.\n");
}
}else{
printf("input error!\n");
}
return 0;
}*/
下面是参考答案 #include <stdio.h>
int main(void)
{
int a,b;
printf("please input a,b:");
scanf("%d,%d",&a,&b);
printf("Output:\n");
if(a<=6&&b>>6)
{
puts("6");
}
if(a<=28&&b>=28){
puts("28");
}
if(a<=496&&b>=496)
{
puts("496");
}
if(a>=8128&&b<=8128)
{
puts("8128");
}
return 0;
}