i<=a/2改成 i<a,另外 ,还需要在for循环前判断是否小于2
if(a<2) {printf("%d不是质数",a);return;}
另外,main函数中为什么用getchar()读取啊,getchar读取的是字符,读取数字用scanf
代码修改如下:
#include <stdio.h>
void iszhishu(int a)
{
int i;
if(a<2)
{
printf("不是质数");
return;
}
for(i=2;i<a;i++)
{
if(a%i==0)
{
printf("不是质数");
return;
}
}
printf("是质数");
}
int main()
{
int began;
scanf("%d",&began);
iszhishu(began);
return 0;
}
代码不对,printf("是质数")的位置错了
void iszhishu(int n)
{
int i;
if(n<2)
{
printf("不是质数");
return;
}
for(i=0;i*i<=n;i++)
{
if(n%i==0)
{
printf("不是质数");
return;
}
}
printf("是质数");
}
int main()
{
int began;
scanf("%d",&began);
iszhishu(began);
return 0;
}