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

C++研究

C++細節(jié)深度探索及軟件工程

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  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 常興龍 閱讀(1361) 評論(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)
{
.....
}
};  回復(fù)  更多評論
  

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

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

# 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  回復(fù)  更多評論
  

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

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

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

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

> 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>
            亚洲精品视频一区二区三区| 亚洲自拍偷拍网址| 玖玖玖免费嫩草在线影院一区| 亚洲欧美日韩精品久久亚洲区| 欧美人与禽猛交乱配视频| 亚洲第一成人在线| 亚洲一区二区三区午夜| 欧美日韩国产小视频在线观看| 欧美一区二区三区四区在线 | 一二三四社区欧美黄| 最新热久久免费视频| 亚洲国产一区二区三区a毛片 | 亚洲资源在线观看| 小黄鸭视频精品导航| 欧美亚洲自偷自偷| 老色鬼精品视频在线观看播放| 欧美电影免费| 久久久久久久一区二区| 久久精品久久综合| 亚洲一二三区在线观看| 欧美在线综合| 欧美国产视频一区二区| 性欧美xxxx大乳国产app| 亚洲国产老妈| 亚洲国产黄色片| 亚洲国内在线| 亚洲欧美国产精品专区久久| 久久久国产亚洲精品| 欧美精品免费播放| 国产丝袜美腿一区二区三区| 91久久精品日日躁夜夜躁国产| 亚洲一区二区伦理| 麻豆国产va免费精品高清在线| 亚洲高清久久网| 亚洲欧美日韩精品久久亚洲区| 久久免费国产精品1| 国产精品成人午夜| 亚洲国产婷婷香蕉久久久久久99 | 国内久久精品视频| 亚洲精品国产视频| 久久精品一本| 亚洲国产片色| 久久精品99久久香蕉国产色戒| 欧美成人高清| 国产欧美不卡| 国产精品日韩专区| 一区二区三区久久| 欧美亚洲免费高清在线观看| 午夜精品久久久久| 亚洲综合精品自拍| 欧美成人激情视频| 国产欧美日韩麻豆91| 99re66热这里只有精品3直播| 亚洲一区二区三区四区中文| 亚洲激情另类| 韩国v欧美v日本v亚洲v| 一本久久a久久精品亚洲| 久久久www成人免费无遮挡大片| 欧美成人国产| 亚洲自拍电影| 欧美日韩一区二区视频在线| 永久555www成人免费| 欧美中文在线观看| 亚洲欧美日韩精品在线| 欧美三级乱码| 日韩视频免费观看高清完整版| 欧美日韩国产黄| 欧美高清视频一区二区| 国产精品自拍三区| 久久精品99国产精品酒店日本| 最新日韩在线视频| 夜夜嗨av一区二区三区中文字幕 | 欧美日韩免费观看一区| 亚洲欧洲日本一区二区三区| 老司机凹凸av亚洲导航| 久久久久久97三级| 亚洲欧洲中文日韩久久av乱码| 亚洲电影在线播放| 欧美精品九九99久久| 亚洲一区免费看| 午夜视黄欧洲亚洲| 在线观看国产日韩| 欧美成人午夜| 欧美激情网站在线观看| 亚洲一区二区不卡免费| 亚洲欧美精品伊人久久| 禁断一区二区三区在线| 欧美国产日韩二区| 久久影音先锋| 亚洲婷婷国产精品电影人久久| 亚洲欧美日韩国产综合精品二区| 精品成人久久| 亚洲国产美女精品久久久久∴| 欧美电影在线免费观看网站| 亚洲美女黄色| 午夜精品福利在线观看| 在线精品福利| 99re66热这里只有精品4| 国产精品国码视频| 国产精品99久久久久久久久| 日韩写真在线| 国产精品分类| 在线观看av不卡| 亚洲国产小视频在线观看| 欧美午夜久久久| 欧美电影专区| 国产欧美精品| 久久精品国产96久久久香蕉| 亚洲精品久久久久久下一站| 亚洲一区二区三区在线观看视频| 激情综合色综合久久| 亚洲免费福利视频| 极品尤物久久久av免费看| 99热这里只有成人精品国产| 影音先锋中文字幕一区| 亚洲图片在区色| 国产亚洲在线| 亚洲精品永久免费精品| 一区二区三区在线免费观看| 在线亚洲国产精品网站| 亚洲美女av在线播放| 久久久久久久综合日本| 亚洲自拍偷拍麻豆| 嫩草国产精品入口| 久久综合久久久久88| 欧美四级电影网站| 欧美.www| 国产亚洲免费的视频看| 亚洲国产精品热久久| 国产亚洲人成网站在线观看| 这里只有精品电影| 一个色综合av| 中文在线资源观看视频网站免费不卡| 性欧美videos另类喷潮| 亚洲女女女同性video| 欧美午夜不卡影院在线观看完整版免费| 欧美日韩日本视频| 国产欧美日韩一区二区三区在线观看 | 欧美一区二区三区婷婷月色 | 欧美jizz19性欧美| 亚洲黄色精品| 亚洲欧美日本国产专区一区| 一区二区在线视频| 欧美久久99| 在线观看亚洲a| 在线国产欧美| 在线日本成人| 亚洲高清在线观看| 国内成人精品视频| 亚洲网站在线| 一区二区三区欧美在线观看| 亚洲无限av看| 久久精品30| 欧美一区二区三区的| 中文在线一区| 亚洲精品乱码久久久久久日本蜜臀 | 国产精品区一区二区三区| 海角社区69精品视频| 伊人天天综合| 亚洲第一福利社区| 亚洲欧美日产图| 亚洲电影成人| 欧美一区二区在线免费播放| 一区二区三区久久| 欧美日韩在线三区| 亚洲欧美一区二区视频| 久久久久久久久久久成人| 国精品一区二区三区| 久久夜色撩人精品| 亚洲高清在线观看| 亚洲一级片在线看| 国产亚洲欧美一区二区三区| 久久国产一区二区三区| 亚洲国产精品久久久| 亚洲免费视频成人| 在线观看亚洲一区| 欧美激情中文字幕一区二区| 久久久久久69| 99re热精品| 在线一区二区日韩| 国产女主播一区二区三区| 久久久999| 亚洲人成人一区二区三区| 亚洲午夜精品| 亚洲成人原创| 国产精品theporn| 久久精品欧美| 国产精品久久二区| 欧美国产日韩精品| 亚洲乱码精品一二三四区日韩在线 | 欧美激情精品久久久久久蜜臀 | 亚洲视频 欧洲视频| 久久成人免费视频| 欧美成人午夜激情在线| 美日韩精品免费观看视频| 亚洲天堂成人| 久久精品三级| 亚洲一级黄色片| 欧美日韩亚洲三区| 亚洲午夜精品网|