#include
#include
void fun(int a, int b, int *c)
{ int i,j,d,y;
for (i=3;i<=a/2;i=i+2)
{
/************found**************/
y=1;
for (j=2;j<=sqrt((double)i );j++)//??為何j<=sqrt((double)i )??
if (i%j==0) y=0;
if (y==1)
{
/*************found**************/
d=a-i;
for (j=2;j<=sqrt((double)d );j++)
if (d%j==0) y=0;
if (y==1)
{*b=i; *c=d;}
}
}
}
void main()
{ int a,b,c;
do
{ printf("\nInput a: ");
_ scanf("%d",&a);}_
while(a%2);
_ fun(a,&b,&c);_
printf("\n\n%d=%d+%d\n",a,b,c);
}
====求教C語言判斷素數程序算法,為何j<=sqrt((double)i )??一般不是用j<i來判斷是否為素數嗎?
比如 說i為64,判斷它是否為素數,那麼j的取值為從2到8(不需要再增加),因為當j從2增加到8,那麼i÷j的商(取整)就是當j超過8時的值。當j取2時,商為32,那麼j還需要增加到32嗎?不需要了,希望你理解