程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言-求教C語言判斷素數程序算法,為何j<=sqrt((double)i )??

c語言-求教C語言判斷素數程序算法,為何j<=sqrt((double)i )??

編輯:編程綜合問答
求教C語言判斷素數程序算法,為何j<=sqrt((double)i )??

#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嗎?不需要了,希望你理解

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved