分享

筛法求素数

 shaobin0604@163.com 2006-11-10

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

void main(void)
{
 int a[101],i,j;
 
 a[1]=0;
 for(i=2; i<=100; i++)
 {
  a[i]=i;   //假设2到100都为素数
 }
 
    for(i=2; i<=sqrt(100); i++)
    {
     if(a[i]!=0)
     {
      for(j=i+1; j<=100; j++)
      {
       if(a[j]!=0 && a[j]%a[i]==0)
       {
        a[j]=0;
       }
       else
        NULL;
      }
     }
    }
   
    for(i=2; i<=100; i++)
    {
     if(a[i]!=0)
     {
      printf("%d是素数。\t",a[i]);
     }
    }
}
 
 
 
public class Prim {
    public static void generatePrime(int n) {
  boolean[] data = new boolean[n + 1]; //设从 0 到 n 都是素数false
  data[0] = data[1] = true;    //0 和 1 不是素数
 
  for (int i = 2; i < (int)Math.sqrt(data.length); i++) {
      if (!data[i]) {
          for (int j = i + 1; j < data.length; j++) {
              if (!data[j] && j % i == 0) {
                  data[j] = true;
              }
          }
      }
  }
  for (int i = 0; i < data.length; i++) {
      if (!data[i]) {
          System.out.printf("%d 是素数\n", i);
      }
  }
 }
 public static void main(String[] args) {
  generatePrime(100);
 }
}

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约