有没有人帮我看看这个问题出在哪?
题目:在屏幕上输出m以内所有满足要求的数。要求:该数除了1和本身之外所有因子之和为n,如果没有满足条件的数则输出"no such numbers"
【输入形式】
m n
【输出形式】
除了1和本身之外所有因子之和为n的数
或
"no such numbers"
【样例输入】
200 30
【样例输出】
32 125 161
#include
int main()
{
int m,n,i,j,c,a;
c=0;
scanf("%d %d",&m,&n);
for(i=1;i<=m;i++)
{
for(j=2;j<=i/2;j++)
{
if(i%j==0)
{
c+=j;
}
}
if(c==n&&i!=i&&i!=1)
{
printf("%d ",i);
a=1;
}
else
printf("no such numbers");
}
}
#include<stdio.h>
int main()
{
int m,n,i,j,c,a;
c=0;
scanf("%d %d",&m,&n);
for(i=2;i<=m;i++)
{
c=0;
for(j=2;j<=i/2;j++)
{
if(i%j==0)
{
c+=j;
}
}
if(c==n)
{
printf("%d ",i);
a=1;
}
}
if(a==0)
printf("no such numbers");
}
第一,第16行i!=i
错了,应删去;
第二,第22至23行,这一步错了:应该检测所有数都不符合条件再输出"no such numbers"
第三,每次循环完以后,计数器c应清零。
改好后代码:
#include<stdio.h>
int main()
{
int m,n,i,j,c,a,flag=0;
c=0;
scanf("%d %d",&m,&n);
for(i=1;i<=m;i++)
{
for(j=2;j<=i/2;j++)
{
if(i%j==0)
{
c+=j;
}
}
if(c==n&&i!=1)
{
printf("%d ",i);
flag=1;
}
c=0;
}
if(!flag){
printf("no such numbers");
}
}