编写函数判断素数问题
#include<stdio.h>#include<math.h>
int fun(int a)
{
int i=0;
int flag=0;
for(i=2;i<a;i++);
{
if(a%i==0)
flag=1;
break;
}
if(flag)
printf("NO\n");
else printf("YES\n");
return a;
}
void main()
{
int a ;
printf("输入一个数字判断是不是素数\n");
scanf("%d",&a);
a=fun(a);
}
编译提示break非法,应该如何修改?? 本帖最后由 行客 于 2019-1-26 19:30 编辑
for(i=2;i<a;i++);
多写了一个;,去掉就可以正常运行了。
#include<stdio.h>
#include<math.h>
int fun(int a)
{
int i=0;
int flag=0;
for(i=2;i<a;i++)
{
if(a%i==0)
flag=1;
break;
}
if(flag)
printf("NO\n");
else printf("YES\n");
return a;
}
void main()
{
int a ;
printf("输入一个数字判断是不是素数\n");
scanf("%d",&a);
a=fun(a);
}
不过这个代码也有问题啊,你输入1也是素数。 行客 发表于 2019-1-26 19:29
不过这个代码也有问题啊,你输入1也是素数。
那应该怎么改呢?? #include<stdio.h>
#include<math.h>
int fun(int number)
{
if (number<=1)
{
return 0;
}
int k = (int)sqrt((double)number); //一个数能被 2 ~ number的开方 整除就是合数,反之是素数
int i = 0;
for(i = 2;i <= k;i ++)
{
if(number%i == 0)
break;
}
return i > k ? number : 0;
}
void main()
{
int a,b ;
scanf("%d",&a);
b=fun(a);
if (b)
{
printf("%d是素数",a);
}
else
{
printf("%d不是素数",a);
}
}
页:
[1]