帮我看看这个判断素数的C程序哪里错了

来源:百度知道 编辑:UC知道 时间:2024/05/13 16:12:12
#include<stdio.h>
void main()
{
int a,b;
int panduan(int x);
scanf("%d",&a);
b=panduan(a);
if (b=0)
{
printf("这个数是素数\n");
}
if (b=1)
{
printf("这个数不是素数\n");
}
}

int panduan(int x)
{
int i=0,j;
for(j=x-1;j>1;j--)
{
if (x%j==0)
{
i=1;
}
break;
}
return(i);
}

/* HELLO.C -- Hello, world */

#include "stdio.h"
#include "conio.h"

void main()
{
int a,b = 0;
int panduan(int x);
scanf("%d",&a);
b=panduan(a);
if (b== 0)
{
printf("yes\n");
}
if (b==1)
{
printf("no\n");
}
}

int panduan(int x)
{
int i=0,j;
for(j=x-1;j>1;j--)
{
if (x%j==0)
{
i=1;
break;
}

}
return(i);
}
试试这个,把break放到if里边。

if(b=0)和if(b=1)分别改为
if(b==0)和if(b==1)

b=0和b=1都为赋值语句,b==0才为判断语句
break放在if语句之外,则for循环第一次执行结束,就会跳出for循环,不再进行下次循环,即j--以后的判断不再进行,与if的条件x%j==0是否成立无关

另外建议i的初值设为1,即i=1时,x为素数。因为一般在程序设计中1代表真,0代表假。当然,不改也没问题,只是个习惯问题