素数

素数筛选法:

     1.开一个大的bool型数组prime[],大小就是n+1就可以了.先把所有的下标为奇数的标为true,下标为偶数的标为false.

    2.然后:

for( i=3; i<=sqrt(n); i+=2 )

      {  
         if(prime[i]) 

          for( j=i+i; j<=n; j+=i )
                prime[j]=false;

      }

   3.最后输出bool数组中的值为true的单元的下标,就是所求的n以内的素数了。

  原理很简单,就是当i是质(素)数的时候,i的所有的倍数必然是合数。如果i已经被判断不是质数了,那么再找到i后面的质数来把这个质数的倍数筛掉。

 

将一个数拆成若干个素数的乘积(90=2*3*3*5)

     对于数N,将2到sqrt(N)中所有的素数从小到大排起来,然后从2开始,用N除以2,再用除得的商除以2,直到不能整除;再用此时的商除以下一个素数3,依次直到所得的商为素数为止。

 

posted @ 2014-10-24 15:01  zhoudan  阅读(155)  评论(0)    收藏  举报