C语言问题(是帮我找错的)不要贴其他的答案.据了解还没人找到这个错误

来源:百度知道 编辑:UC知道 时间:2024/06/06 08:33:04
这是我编的找因子的程序,上机试了下,正确的.
#include <stdio.h>
void main()
{
int n,i;
i=2;
printf("\nplease input a number\n");
scanf("%d",&n);
printf("%d its factor is 1",n);
while(i <=n)
{
if(n%i==0)
{printf(",%d",i);
n=n/i;
i=2;
}
else
i++;
}
}
下面这个是我编的输出1000内的完数的程序.不知道怎么的就是不对.
#include <stdio.h>
void main()
{
int n,m,i;
for(m=1;m <=1000;m++)
{ i=2;n=1;
while(i <=m)
{
if(n%i==0)
{n=n+i;
m=m/i;
i=2;
}
else
i++;
}
if(n==m)
{
printf("%d its factor id 1",m);
i=2;
while(i <=n)
{
if(n%i==0)
{printf(",%d",i);
n=n/i;
i=2;

1.首先告诉你下,你编的求因子的是错误的。
2.假设你的因子是正确的。
while(i <=m)
{
if(n%i==0) 、、这个地方也应该是M
3.
在你的算法里当执行完第一个WHILE M的值是为1的
怎么和后面的N==M比较
按照你的思路是应该先把M的值存储起来才行。
4.这个循环有1000次,你打1000个换行看的到结果么
PS:例如 28 他的因子有1,2,4,7,14,28
完数是他的因子之和除去本身相加等于本身
28=1+2+4+7+14
程序看样就不需要给你写了
能写出上面的表示你还是对程序有一定的了解,自己修改下吧
看程序真的很累

用得着这么复杂吗?

#include <Stdio.h>
void main()
{
int m,i,s;
for(m=1;m<=1000;m++)
{
s=0;
for(i=1;i<m;i++)
if(m%i==0)
s=s+i;
if(s==m)
}
printf("%d,",s);
}

求n以内的完数 ,希望对你有点帮助
#include<stdio.h>
#include<stdlib.h>
void main()
{
int i,j,s,n;
printf("请输入大于等于2的整数n:");
scanf("%d",&n);
if(n<2)exit(0);
printf("%d以内的所有完全数为:",n);
for(j=2;j<n+1;j++)
{
s=0;
for(i=1;i<j;i++)
{
if(j%i==0)
s+=i;