求質數的個數

看了這方面的文章,整理一下.初學程序設計.注釋都沒有個.呵呵
思想:

利用大於2的質數都是奇數這一知識,將存放待篩整數空間減少一半,只存儲奇數。
利用大於3的質數都不能被3整除這一知識, 去掉比3大的   (3的倍數)
利用大於5的質數都不能被5整除這一知識, 去掉比5大的   (5的倍數)
利用大於7的質數都不能被7整除這一知識, 去掉比7大的   (7的倍數 )
...
...
利用大於n的質數都不能被n整除這一知識, 去掉比n大的   (n的倍數)

VB.net版
 Dim N, i, j
        N = CInt(Me.txtMaxNbr.Text)

        Dim z(N)
        Dim startTime As DateTime = Now

        'initialize array

        For i = 0 To N
            z(i) = 0
        Next

        'mark multiples of i


        For i = 2 To N / 2
            For j = 2 * i To N Step i
                z(j) = 1
            Next
        Next

        'count unmarked numbers, which are primes
        Dim nbr = 0

 

        For i = 2 To N
            If z(i) = 0 Then
                nbr += 1
            End If
        Next


        Me.lblNbrPrimes.Text = nbr

C#版
int  k=Int32.Parse(textBox1.Text);
   int b=0;
   int [] a=new int[k+1];
   
   for(int c=0;c<k+1;c++){
      a[c]=0;
   }

   for(int i=2;i<=k/2;i++){
    for(int j=2*i;j<=k;j+=i){
     a[j]=1;
    }
   }

   for(int m=2;m<=k;m++){
    if (a[m]!=1)  
     b++;
   }

   label1.Text=b.ToString();
       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值