求a 到b之间的素数,C语言

来源:百度知道 编辑:UC知道 时间:2024/09/25 15:20:07
#include <stdio.h>
int main(void)
{
int a,b,counter,j;
while(scanf("%d%d",&a,&b)!=EOF)
{
if((a==0)&&(b==0))
continue;else
{
for(counter=a;counter<=b;counter++)
{
for(j=a;j<counter;j++)
{
if((counter%j!=0)&&(a!=j)&&(j!=1))
printf("%d\n",counter);
else ;
}
}

}}
return 0;
}

求改。指出哪错了。谢谢。。。

#include <stdio.h>
int main(void)
{
int a,b,counter,j;
int temp = 0;
while(scanf("%d %d",&a,&b)!=EOF)
{
if((a==0)&&(b==0))
continue;
else
{
for(counter=a;counter<=b;counter++)
{
temp = 1; //标示是否为素数,1为素数,0为非素数
for(j=2;j<counter;j++)
{
if(counter%j==0)
temp = 0;
}
if(temp == 1)
printf("%d\n",counter);
}

}
}
return 0;
}
语法没有错误,主要是逻辑错误。for循环,里面的if判断不合理,思路有点混乱,看不出什么逻辑来。主要是你对素数的理解还不够,素数要求“只”能被1和本身整除,这种问题,通常都可以反着想。可以判断出,只要可以被1和本身之外的数整除的就不是素数,就可以了。多多练习。

return 0;上面有两个花括号重叠在一起了,应该是多了一个花括号}

#include <stdio.h>
int main(void)
{
int a=1,b=100,counter,j,c; //c标志是否为素数1是,0否
while(scanf("%d%d",&a,&b)!=EOF)
{
if((a==0)&&(b==0))
continue;
else
{