求一个数是否为素数?这个代码错哪里啦?

来源:百度知道 编辑:UC知道 时间:2024/06/17 18:16:27
#include<stdio.h>
int main()
{
int isprime(int x);
int x;
int y;
scanf("%f",&x);
y=isprime(x);
printf("y=%d",y);
}
int isprime(int a )

{

int i;

for(i=2;i<=a/2;i++)

if(a%i==0) return0;

else return1;

}

算法没有错, 逻辑上出了点错,控制语句的嵌套混乱(else语句处于循环之外),else语句处于循环内也不能得到正确的结果。而且,在给x赋值时应用%d,这你马虎了。
#include<stdio.h>
int main()
{
int isprime(int a);
int x;
int y;
scanf("%d",&x);
y=isprime(x);
printf("y=%d",y);
}

int isprime(int a)
{
int i, m=1;
for(i=2; i<=a/2; i++)
{
if(a%i==0) m=0;
}
if(m) return 1;
else return 0;
}

你的函数不对for语句应该是for(i=2;i<a;i++){if(a%i==0) return0;}return a;