青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

C++研究

C++細節深度探索及軟件工程

  C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
  37 隨筆 :: 0 文章 :: 74 評論 :: 0 Trackbacks


1.GRIDDLE METHOD (ALSO CALLED SIFT METHOD)

When I was a student in Bachelor phrase , a teacher has tought me a method called griddle method , it's principle is:

if a number can be devided by another number(except 1) , it isn't a prime , so , we set the non-prime at zero. after all number [In fact , half of the range checked is OK ]test finished , We simply output the NON-ZERO number , it 's the prime table in the RANGE.

E.G
Define the Range from 1-100;

/********************************************************************
 created: 2007/04/19
 created: 19:4:2007   3:00
 filename:  C:\testvc6\TestStll\TestStll.cpp
 file path: C:\testvc6\TestStll
 file base: TestStll
 file ext: cpp
 author:  Chang xinglong(King.C)
 purpose: Print Prime Table in RANGE(1-100)
*********************************************************************/

The Code Here :

 


#include 
<iostream>
#include 
<algorithm>
#include 
<vector>
using namespace std;

void InitArray(int A[] ,int len)
{
    
for (int i=0;i<len;i++)
    
{
        A[i]
=i+1;
    }

}


void OutputPrime(int A[] ,int len)
{
  
for (int i=2;i<len;i++)
  
{
      
for (int j=2;i*j<=len;j++)
      
{
          A[i
*j-1]=0;
          cout
<<i<<","<<j<<","<<i*j<<endl;
      }

     
  }

  
for (i=0;i<len;i++)
  
{
      
if (A[i]!=0)
      
{
          cout
<<A[i]<<" ";
      }

      
  }

  cout
<<endl;
}

// Main Method [4/19/2007 Changxinglong (King.C)]
int main(int argc, char* argv[])
{
    
int A[100];
    InitArray(A,
100);
    OutputPrime(A,
100);
    
return 1;
}




 2.THE DIRECT METHOD

E.G

/********************************************************************
 created: 2007/04/19
 created: 19:4:2007   3:00
 filename:  C:\testvc6\TestStll\TestStll.cpp
 file path: C:\testvc6\TestStll
 file base: TestStll
 file ext: cpp
 author:  Chang xinglong(King.C)
 purpose: Prime ?
*********************************************************************/

Here is the Kernel Function(Quote : STL TURORIAL REFERRENCE):

 

 1//predicate, which returns whether an integer is a prime number
 2bool isPrime (int number)
 3{
 4//ignore negative sign
 5number = abs(number);
 6// 0 and 1 are prime numbers
 7if (number == 0 || number == 1{
 8return true;
 9}

10//find divisor that divides without a remainder
11int divisor;
12for (divisor = number/2; number%divisor != 0--divisor) {
13;
14}

15//if no divisor greater than 1 is found, it is a prime number
16return divisor == 1;
17}


In Main Function , traverse the given range judge every number use the above function:

int main(int argc , char * argv[])
{
  
int A[100];
  InitArray(A,
100);
  
for(int i=0;i<100;i++)
    
if(isPrime(A[i]))
       cout
<<A[i]<<endl;
}

3. Extention
 Further , if  there is a given List or Vector and it's filled with data , how can you find the prime number in the data effiectly ?
STL Algorithm can help you indeed. After the step two , we can write a few code to implement the function:
int main()
{
list
<int> coll;
//insert elements from 1 to 100
for (int i=1; i<=100++i) {
coll.push_back(i);
}

//search for prime number
list<int>::iterator pos;
pos 
= find_if (coll.begin(), coll.end(), //range
isPrime); //predicate
if (pos != coll.end()) {
//found
cout << *pos << " is first prime number found" << endl;
}

else {
//not found
cout << "no prime number found" << endl;
}

}


posted on 2007-04-19 03:05 常興龍 閱讀(1375) 評論(8)  編輯 收藏 引用 所屬分類: Algorithm

評論

# re: Some algorithms about judging a prime . 2007-04-19 10:58 uglystone
Write well!
I think tha IsPrime funtion shoule be implemented as a functors!
it may be more elegant!
class IsPrime{
public:
IsPrime(){
}
bool isPrime (int number)
{
.....
}
};  回復  更多評論
  

# re: Some algorithms about judging a prime . 2007-04-19 22:18 chenger
這應該是最原始的辦法  回復  更多評論
  

# re: Some algorithms about judging a prime . 2007-04-26 19:00 oyjpart
有一些很好的隨機算法  回復  更多評論
  

# re: Some algorithms about judging a prime . 2007-05-12 23:26 不是很懂
A primality test is a test to determine whether or not a given number is prime, as opposed to actually decomposing the number into its constituent prime factors (which is known as prime factorization).

Primality tests come in two varieties: deterministic and probabilistic. Deterministic tests determine with absolute certainty whether a number is prime. Examples of deterministic tests include the Lucas-Lehmer test and elliptic curve primality proving. Probabilistic tests can potentially (although with very small probability) falsely identify a composite number as prime (although not vice versa). However, they are in general much faster than deterministic tests. Numbers that have passed a probabilistic prime test are therefore properly referred to as probable primes until their primality can be demonstrated deterministically.

A number that passes a probabilistic test but is in fact composite is known as a pseudoprime. There are many specific types of pseudoprimes, the most common being the Fermat pseudoprimes, which are composites that nonetheless satisfy Fermat's little theorem.

The Rabin-Miller strong pseudoprime test is a particularly efficient test. Mathematica versions 2.2 and later have implemented the multiple Rabin-Miller test in bases 2 and 3 combined with a Lucas pseudoprime test as the primality test used by the function PrimeQ[n]. Like many such algorithms, it is a probabilistic test using pseudoprimes. In order to guarantee primality, a much slower deterministic algorithm must be used. However, no numbers are actually known that pass advanced probabilistic tests (such as Rabin-Miller) yet are actually composite.

The state of the art in deterministic primality testing for arbitrary numbers is elliptic curve primality proving. As of 2004, the program PRIMO can certify a 4769-digit prime in approximately 2000 hours of computation (or nearly three months of uninterrupted computation) on a 1 GHz processor using this technique.

Unlike prime factorization, primality testing was long believed to be a P-problem (Wagon 1991). This had not been demonstrated, however, until Agrawal et al. (2002) unexpectedly discovered a polynomial time algorithm for primality testing that has asymptotic complexity of (Bernstein 2002, Clark 2002, Indian Institute of Technology 2002, Pomerance 2002ab, Robinson 2002). Their algorithm has come to be called the AKS primality test.

http://mathworld.wolfram.com/PrimalityTest.html  回復  更多評論
  

# re: Some algorithms about judging a prime . 2007-05-17 00:12 天津大學計算機學院 常興龍
Very appreciated for your comment , I have benefited a lot from it. thanks again!  回復  更多評論
  

# re: Some algorithms about judging a prime . 2008-04-24 02:01 Rex.Kingsir
Thanks a lot for talk so much!  回復  更多評論
  

# re: Some algorithms about judging a prime . 2008-07-05 16:45 我們一起來提高
數論學家利用費馬小定理研究出了多種素數測試方法,目前最快的算法是拉賓米
勒測試算法,其過程如下:
(1)計算奇數M,使得N=(2**r)*M+1
(2)選擇隨機數A<N
(3)對于任意i<r,若A**((2**i)*M) MOD N = N-1,則N通過隨機數A的測試
(4)或者,若A**M MOD N = 1,則N通過隨機數A的測試
(5)讓A取不同的值對N進行5次測試,若全部通過則判定N為素數
若N 通過一次測試,則N 不是素數的概率為 25%,若N 通過t 次測試,則N 不是
素數的概率為1/4**t。事實上取t 為5 時,N 不是素數的概率為 1/128,N 為素數的
概率已經大于99.99%。
在實際應用中,可首先用300—500個小素數對N 進行測試,以提高拉賓米勒測試
通過的概率,從而提高測試速度。而在生成隨機素數時,選取的隨機數最好讓 r=0,
則可省去步驟(3) 的測試,進一步提高測試速度
  回復  更多評論
  

# re: Some algorithms about judging a prime . 2009-05-16 19:29 u2u
@我們一起來提高
現在最快的是AKS...  回復  更多評論
  

> hi的博客
青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            亚洲人成在线观看一区二区| 亚洲高清视频一区| 久久美女性网| 亚洲在线观看| 欧美日韩国产精品| 欧美黑人在线观看| 亚洲二区视频| 欧美在线视频网站| 亚洲女同性videos| 欧美视频中文在线看| 亚洲黑丝在线| 亚洲欧洲日韩在线| 卡通动漫国产精品| 免费看av成人| 亚洲电影免费观看高清完整版在线| 午夜在线一区| 久久av一区| 国产日本欧美一区二区三区在线 | 一区二区高清视频| 一二美女精品欧洲| 欧美日韩国产天堂| 中文欧美字幕免费| 亚洲欧美电影院| 国产精品v欧美精品v日本精品动漫| 亚洲精品欧美极品| 亚洲一区二区三区国产| 欧美日韩一区二区在线观看视频 | 欧美日韩国产123区| 亚洲国产一区二区在线| 亚洲精品一区在线观看| 欧美精品在线免费观看| 亚洲精品欧美专区| 亚洲自拍偷拍网址| 国产精品久久久久久久久久ktv| 在线视频亚洲欧美| 久久av二区| 狠狠久久综合婷婷不卡| 麻豆成人在线| 日韩亚洲视频| 久久不射中文字幕| 一区免费观看| 欧美日韩国产成人在线免费| 一本色道久久综合狠狠躁篇怎么玩| 在线综合亚洲| 国产视频观看一区| 久久综合伊人77777蜜臀| 亚洲日本欧美天堂| 性做久久久久久免费观看欧美| 国产日韩欧美在线一区| 玖玖玖免费嫩草在线影院一区| 亚洲日产国产精品| 久久精品国产成人| 亚洲欧洲日产国产综合网| 欧美午夜精品一区| 久久婷婷蜜乳一本欲蜜臀| 亚洲国产欧美在线人成| 香蕉乱码成人久久天堂爱免费| 激情国产一区二区| 国产精品草草| 久久伊伊香蕉| 中国女人久久久| 免费在线播放第一区高清av| 一本色道久久加勒比精品| 国产亚洲美州欧州综合国| 女同一区二区| 午夜在线不卡| 亚洲精品社区| 欧美激情2020午夜免费观看| 亚洲免费影视第一页| 亚洲国产成人久久综合| 国产精品乱人伦一区二区| 久久天天躁夜夜躁狠狠躁2022 | 亚洲一区亚洲二区| 在线日韩av片| 国产精品久久久久久福利一牛影视| 久久久久久久网| 亚洲一级二级| 日韩午夜在线视频| 亚洲第一天堂无码专区| 久久另类ts人妖一区二区| 国产精品99久久久久久久久| 亚洲欧洲视频| 影音先锋日韩精品| 国内视频一区| 国产日韩精品电影| 国产精品久久久久aaaa樱花| 欧美精品久久一区| 久久综合伊人77777| 久久se精品一区二区| 亚洲自拍都市欧美小说| 99视频一区二区| 亚洲九九精品| 亚洲精品视频在线| 最新日韩欧美| 亚洲区第一页| 亚洲精品久久久久久久久久久| 欧美777四色影视在线| 久久亚洲精品一区| 免费的成人av| 麻豆91精品91久久久的内涵| 久久精品首页| 久久久久国产精品麻豆ai换脸| 香蕉久久夜色精品国产使用方法| 亚洲综合激情| 香蕉乱码成人久久天堂爱免费| 亚洲一区二区三区四区中文| 一区二区久久久久久| 一本色道久久综合亚洲91| 一区二区三区国产精品| 一本久道久久综合中文字幕| 一区二区高清| 中文av一区特黄| 午夜视频久久久| 久久狠狠亚洲综合| 浪潮色综合久久天堂| 模特精品在线| 亚洲国产小视频| 亚洲精品欧美在线| 亚洲一区二区三区免费视频 | 一本久道综合久久精品| 99riav1国产精品视频| 国产精品99久久不卡二区| 亚洲女同精品视频| 久久久亚洲国产美女国产盗摄| 久热精品在线视频| 欧美日本三区| 国产精品一区2区| 伊人蜜桃色噜噜激情综合| 亚洲乱码一区二区| 亚洲欧美日韩综合aⅴ视频| 欧美在线观看天堂一区二区三区| 久久精品一区二区三区不卡| 麻豆精品传媒视频| 亚洲精品久久久久中文字幕欢迎你| 99在线精品观看| 欧美一区二区视频网站| 欧美搞黄网站| 国产精品一二一区| 亚洲黄色一区| 欧美一区二区性| 欧美激情导航| 午夜精品久久久久久久久久久久 | 欧美与欧洲交xxxx免费观看| 久久在线视频在线| 国产精品久久久久国产精品日日| 国产真实乱偷精品视频免| 亚洲精品视频啊美女在线直播| 亚洲午夜精品久久久久久浪潮| 久久久久国色av免费看影院| 亚洲国产精品一区制服丝袜| 亚洲综合视频1区| 欧美激情亚洲| 一区二区在线观看av| 亚洲一区二区日本| 欧美大片网址| 欧美一二三视频| 欧美日韩色综合| 亚洲国产成人久久综合| 性欧美超级视频| 亚洲伦理一区| 欧美成人精品福利| 狠狠色丁香久久综合频道| 亚洲午夜一区二区三区| 亚洲高清视频一区| 久久久7777| 国产欧美一区二区精品性| 99精品热6080yy久久| 麻豆精品一区二区综合av| 亚洲一区二区免费视频| 欧美精品一区二区三区很污很色的 | 欧美日韩理论| 亚洲精美视频| 麻豆成人小视频| 午夜久久99| 国产精品xxxxx| 亚洲午夜激情免费视频| 亚洲黄色在线观看| 麻豆av一区二区三区久久| 国产一区视频在线看| 午夜一区二区三区不卡视频| 99在线热播精品免费| 欧美日本一区| 一本色道久久综合亚洲精品小说| 亚洲第一综合天堂另类专| 久久综合成人精品亚洲另类欧美| 国产一区二区三区在线免费观看| 午夜精品视频网站| 亚洲资源av| 国产日韩欧美夫妻视频在线观看| 在线一区二区三区四区五区| 亚洲毛片在线看| 欧美体内she精视频| 亚洲一级一区| 亚洲免费在线观看| 国产乱码精品一区二区三区av| 性久久久久久久久久久久| 午夜精品福利电影| 狠狠色香婷婷久久亚洲精品| 免费一区二区三区| 欧美高清视频免费观看|