#8688: 判斷質數_是否有更快方法或概念?


michael7105 (Azure Sky)


#include<iostream>
#include<cmath>
using namespace std;
int main(void)
{
 register long h,i,j;        //暫存器變數
 while(cin>>i)
 {
 h=sqrt(i);                    //算到根號處
 bool k=true;
 for(j=3;j<h;j+=2)       //只讀奇數,加速兩倍
 {
  if(i%2==0)
  k=false;
  else
  {
  
  if(i%j==0)
  {
   k=false;
   break;
  }
 }
}
 if(k==true)
 cout<<"質數"<<endl;
 else
 cout<<"非質數"<<endl;
 }
}

 是否有更快方法或概念?

#8954: Re:判斷質數_是否有更快方法或概念?


tcfsh910993 (Akito-senior)


#include
#include
using namespace std;
int main(void)
{
 register long h,i,j;        //暫存器變數
 while(cin>>i)
 {
 h=sqrt(i);                    //算到根號處
 bool k=true;
 for(j=3;j {
  if(i%2==0)
  k=false;
  else
  {
  
  if(i%j==0)
  {
   k=false;
   break;
  }
 }
}
 if(k==true)
 cout<<"質數"< else
 cout<<"非質數"< }
}

 是否有更快方法或概念?


你可以試試看Miller-Rabin Primility Test

 

 

#9030: Re:判斷質數_是否有更快方法或概念?


fantasy_whale (幻光海鯨)


#include
#include
using namespace std;
int main(void)
{
 register long h,i,j;        //暫存器變數
 while(cin>>i)
 {
 h=sqrt(i);                    //算到根號處
 bool k=true;
 for(j=3;j {
  if(i%2==0)
  k=false;
  else
  {
  
  if(i%j==0)
  {
   k=false;
   break;
  }
 }
}
 if(k==true)
 cout<<"質數"< else
 cout<<"非質數"< }
}

 是否有更快方法或概念?


你可以試試看Miller-Rabin Primility Test

 O_O