zoukankan      html  css  js  c++  java
  • 埃拉托色尼筛法 素数

    运行时间和下式成正比:N+N/2+N/3+N/7+N/11+……

    #include <cstdio>
    #include <cstdlib>
    using namespace std;
    int main(int argc, char* argv[])
    {
    	int n;
    	if (argc != 2)
    	{
    		printf("usage:bin n
    ");
    		exit(0);
    	}
    	n = atoi(argv[1]);
    	int i;
    	int* arr = (int *)malloc(sizeof(int)*(n+1));
    	for (i = 0; i <= n; i++)
    		arr[i] = 1;
    	int j;
    	for (i = 2; i <= n; i++)
    	{
    		if (arr[i]!=0)
    			for (j = i; j*i <= n;j++)
    				arr[i*j] = 0;
    	}
    	for (i = 2; i <= n;i++)
    		if (arr[i])
    			printf("%d ",i);
    	printf("
    ");
    
    	return 0;
    }
    

    指定参数为100后,得到100以内的质数,如下:  

  • 相关阅读:
    CodeForces
    HDU
    HDU
    POJ
    URAL
    POJ
    UVa
    UVa
    UVa
    UVa
  • 原文地址:https://www.cnblogs.com/lakeone/p/4146950.html
Copyright © 2011-2022 走看看