user-0 提问: C语言大神快来1000以内的完数，简单题水得不是那么厉害，但是小白我还是不会改代码

回复:
user: user-0
content: 我自己结贴算了，始终相信，各有缘法，能投机取巧也是不错，只要你会，正规代码反而没有什么意思因为纠结太久，但是放假整理时会附上，我就说下投机取巧的吧，自己百度题目范围内所有完数，然后根据每个完数范围直接输出，，，

user: user-0
content: 引用 12 楼 pkuzhx 的回复:[quote=引用 9 楼 zuoside__lord 的回复:] [quote=引用 8 楼 pkuzhx 的回复:] sum没有清零吧，其他没留意。 debug程序是基本技能。 不懂就问也是学习的过程，闭门造车也许一辈子都造不出来，[/quote] 也要自己先想办法解决吧？你一有一点小问题，自己都懒得去debug，就指着别人帮你，这叫要奶瓶。[/quote]0

user: user-1
content: 引用 9 楼 zuoside__lord 的回复:[quote=引用 8 楼 pkuzhx 的回复:] sum没有清零吧，其他没留意。 debug程序是基本技能。 不懂就问也是学习的过程，闭门造车也许一辈子都造不出来，[/quote] 也要自己先想办法解决吧？你一有一点小问题，自己都懒得去debug，就指着别人帮你，这叫要奶瓶。

user: user-2
content: 穷举的话这题不难吧。。。1000之内也就3个数而已#include <stdio.h> #include <math.h>  bool Judge(int value) { 	int sum=1; 	int l=(int)sqrt(value); 	for (int i=2;i<=l;i++) 	{ 		if (value%i==0) 		{ 			sum+=i; 			sum+=value/i; 		} 	}  	return value==sum; }  void startJudge(int n) { 	bool found=false; 	for (int i=2;i<=n;i++) 		if (Judge(i)) 		{ 			printf("%d ",i); 			found=true; 		}  	if (found) 		printf("\n"); 	else 		printf("none\n"); }  int main() { 	int sum; 	scanf("%d",&sum); 	if (sum<=0) 	{ 		printf("Are you kidding me?\n"); 		return -1; 	} 	int *n=new int[sum]; 	for (int i=0;i<sum;i++) 	{ 		scanf("%d",n+i); 		if (n[i]<=0) 		{ 			printf("Are you kidding me?\n"); 			delete[] n; 			return -1; 		} 	}  	for (int i=0;i<sum;i++) 		startJudge(n[i]);  	delete[] n;  	return 0; }

user: user-0
content: 引用 10 楼 cutmelon的回复:穷举的话这题不难吧。。。1000之内也就3个数而已#include <stdio.h> #include <math.h>  bool Judge(int value) { 	int sum=1; 	int l=(int)sqrt(value); 	for (int i=2;i<=l;i++) 	{ 		if (value%i==0) 		{ 			sum+=i; 			sum+=value/i; 		} 	}  	return value==sum; }  void startJudge(int n) { 	bool found=false; 	for (int i=2;i<=n;i++) 		if (Judge(i)) 		{ 			printf("%d ",i); 			found=true; 		}  	if (found) 		printf("\n"); 	else 		printf("none\n"); }  int main() { 	int sum; 	scanf("%d",&sum); 	if (sum<=0) 	{ 		printf("Are you kidding me?\n"); 		return -1; 	} 	int *n=new int[sum]; 	for (int i=0;i<sum;i++) 	{ 		scanf("%d",n+i); 		if (n[i]<=0) 		{ 			printf("Are you kidding me?\n"); 			delete[] n; 			return -1; 		} 	}  	for (int i=0;i<sum;i++) 		startJudge(n[i]);  	delete[] n;  	return 0; } 我试试去，AC才是王道

user: user-0
content: 引用 8 楼 pkuzhx 的回复:sum没有清零吧，其他没留意。 debug程序是基本技能。 不懂就问也是学习的过程，闭门造车也许一辈子都造不出来，

user: user-1
content: sum没有清零吧，其他没留意。 debug程序是基本技能。

user: user-0
content: 引用 6 楼 hornsey2012的回复:你的程序改了下 你把循序多写了一遍  #include<stdio.h> int main() {     int n,i,sum,j,k,m;     scanf("%d",&j);     for(k=2; k<=j; k++)     { 	    sum=1;         for(m=2; m<k; m++)         { 	         if(k%m==0)                  sum = m+sum;         }         if(sum==m)         {             printf("%d ",sum);         } 		else         {             printf("none\n");         }     } } 我们要多组输入，，，你修改后的代码满足不了，而且它会输入好多none,我们只能输出一次

user: user-3
content: 你的程序改了下 你把循序多写了一遍  #include<stdio.h> int main() {     int n,i,sum,j,k,m;     scanf("%d",&j);     for(k=2; k<=j; k++)     { 	    sum=1;         for(m=2; m<k; m++)         { 	         if(k%m==0)                  sum = m+sum;         }         if(sum==m)         {             printf("%d ",sum);         } 		else         {             printf("none\n");         }     } }

user: user-3
content: 看看我这个  #include <stdio.h>  /*  * Judge whether the value is a wanshu, yes return 1, no return 0  */ int Judge(int value) {         int i;         int len = value/2;         int sum = 0;          if( value <= 1)                 return 0;         else                 sum = 1;          for(i=2; i <= len; i++)         {                 if(value%i == 0)                         sum += i;         }          if(sum == value)                 return 1;         else                 return 0; }  int main(int argc,char *argv[]) {         int i,n;          printf("Please input a num in 1-1000:");          scanf("%d",&n);          for(i = 1; i<=n; i++)         {                 if(Judge(i) == 1)                         printf("%d\n",i);                 else                         printf("none\n");         }          return 0; }

user: user-0
content: 引用 2 楼 nalw2012 的回复:楼主你把自己的话重新捋一遍吧！越看越迷糊！就是说我代码有错的，请帮忙修改，但是我又不知道哪里错了

user: user-0
content: 引用 1 楼 user-4 的回复:根本就不懂楼主你在说啥。。。。 引用 1 楼 user-4 的回复:根本就不懂楼主你在说啥。。。。，最简单的理解 就是我代码有错的就，请帮忙修改

user: user-3
content: 楼主你把自己的话重新捋一遍吧！越看越迷糊！

user: user-4
content: 根本就不懂楼主你在说啥。。。。