这个求素数的C程序对不对?

来源:百度知道 编辑:UC知道 时间:2024/06/09 07:14:08
好像有点问题 请大家帮忙看一看 本人初学者 谢谢
#include<stdio.h>
void main()
{
int a,b,c,d,e;
b=2;
scanf("%d",&a);
for (c=a;c<=a;c++)
{
d=a%b;
b++;
b<=(a-1);
}
if (d!=0||a==2)
{
printf("YES");
}
else
{
printf("NO");
}

getch();
}
还有就是5467是不是素数啊 ??
错在哪呢

int a,b,d;
b=2;
scanf("%d",&a);
for (d=1;b*b<=a;b++)
{
if(a%b==0) {d=0;break;}
}
if (d!=0||a==2)
{
printf("YES");
}
else
{
printf("NO");
}
简单的修改,复杂度O(n^0.5)不太好
可先判断奇偶数,然后b+=2;稍做优化,也可数组储存前***个素数优化

for (c=a;c<=a;c++)不说别的,这个上来就是错的,进来就把a赋给c,然后比较a,c,这循环,能进行下去么。还有循环里面这个b<=(a-1);语句根本没有任何意义

#include "stdio.h"
#include "math.h"
void main()
{long a,b,c,d;
scanf("%ld",&a);
if(a<1)printf("输入错误");
else
{c=sqrt(a);
for(b=2;b<=c;b++)
{d=a%b;
if(d==0)
{printf("%ld可以被%ld整除\n",a,b);
printf("%ld不是素数",a);
break;
}
}
if(b>c)printf("%ld是素数",a);
}
}
上面这程序可以判断一个数是否是素数,如果不是素数的话,还会输出第一个可以整除的数
5467不是素数

#include<stdio.h>
void main() <