C语言:判断某个整数是不是素数.

来源:百度知道 编辑:UC知道 时间:2024/09/21 09:26:08
/*判断某个数是不是素数*/
#include"stdio.h"
int main(void)
{
int x,y;
printf("请输入一个整数(1<x<32767):\n");
scanf("%d",&x);
if(x<1||x>32767)
printf("您的输入有误!\n");
else
{
for(y=2;y<x-1;y++)
if(x%y==0)
printf("%d不是素数!\n",x);
else
printf("%d是素数!\n",x);
}
return 0;
}
这个程序的问题出在哪呢?

#include"stdio.h"
int main(void)
{
int x,y,t=0;
printf("请输入一个整数(1<x<32767):\n");
scanf("%d",&x);
if(x<1||x>32767)
printf("您的输入有误!\n");
else
{
for(y=2;y<x-1;y++)
if(x%y==0)
printf("%d NO!\n",x),y=x+2,t=0;//y=x+2是为了提前退出循环
else
t=1;
}

if (t==1) {
printf("%d YES!\n",x);
}
getch();
return 0;

}

for循环中判断是否是素数这段程序太简单了有问题,如果x=9,x%2==0为假,能说是素数吗?
此段程序要改!

等一下各位,for(y=2;y<x-1;y++) 这句有问题啊
只要y<x就可以了,不然的话漏了一个数。(其实只要Y<=x^0.5就可以了)。
还有

if(x<1||x>32767)
printf("您的输入有误!\n");
如果X=1的话应该也是错误输入,但这句认为是有效输入

#include "stdio.h"

int Isprime( int x )
{
for ( int i = 2; i <= x / 2; i++ )
{
if ( x % i == 0 )
return 0;
}
return 1;
}

int main()