C语言问题 请大侠帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/17 01:57:13
输入一个数,显示出从1到这个数的所有素数(质数),

要求用自定义函数的形式做:

#include<stdio.h>
int prime(int x)
{
int a,b;a=x;b=1;
while(a>1){a--;if(x%a==0){b=0;return b;}break;}
}
main()
{
int n,m;m=2;
scanf("%d",&n);
while(m<n)
{m++;
if(prime(n))
printf("%d ",n);
}
getch();
}

是行动错误,不知道哪有问题,结果却是显示的从1到n的所有数。。。。。
#include<stdio.h>
int prime(int x)
{
int a,b;a=x;b=1;
while(a>1){a--;if(x%a==0){b=0;return b;}break;}
}
main()
{
int n,m;m=2;
scanf("%d",&n);
while(m<n)
{m++;
if(prime(m))
printf("%d ",m);
}
getch();
}
是运行错误,不知道哪有问题,结果却是显示的从1到n的所有数。。。。。

修改如下:

#include<stdio.h>
#include <conio.h>
int prime(int x)
{
int a,b;a=x;b=1;
while(a>2){ /*注意这里*/
a--;
if(x%a==0)
{b=0;break;}
}
return b;/*注意这里*/
}
main()
{
int n,m;m=2;
scanf("%d",&n);
while(m<n)
{m++;
if(prime(m))/*注意这里*/
printf("%d ",m);/*注意这里*/
}
getch();
}

都是逻辑错误

不知所谓

=================================
#include<stdio.h>
int prime(int x)
{
int a,b;
a=x-1;
b=1;
while(a>1)
{
//a--;
if(x%a==0)
{
//b=0;
return 0;
}
//break;
a--;
}
return 1;
}
main()
{
int n,m;
m=2;
scanf("%d",&n);
while(m<n)
{m++;
if(prime(m))
printf("%d ",m);
}

}

你的程序写的感觉有点乱,我读着好累啊。

不知道你写的有问题还是什么,感觉你应该是个初学者吧,问题如下: