• 筛选法输出100以内的所有素数


    #include <stdio.h>
    #include <math.h>
    
    int main(void)
    {
    	int i;
    	int j;
    	int a[101];                // 为直观表示,各元素与下标对应,0号元素不用
    
    	for (i = 1; i <= 100; i++) // 数组各元素赋值
    		a[i] = i;
    
    	for (i = 2; i < sqrt(100); i++)     // 外循环使i作为除数
    	{
    		for (j = i + 1; j <= 100; j++)  // 内循环检测除数i之后的数是否为i的倍数
    		{
    			if (a[i] != 0 && a[j] != 0) // 排除0值元素
    				if (a[j] % a[i] == 0)
    					a[j] = 0;           // i后数若为i的倍数,刚将其置0(挖去)
    		}
    	}
    
    	int n = 0;    // 对输出素数计数, 以控制换行显示
    
    	for (i = 2; i <= 100; i++)    // 输出素数
    	{
    		if (a[i] != 0)
    		{
    			printf("%-5d", a[i]); // 输出数组中非0元素(未挖去的数)
    			n++;
    		}
    		if (n == 10)
    		{
    			printf("\n");         // 每行10个输出
    			n = 0;
    		}
    	}
    	printf("\n");
    
    	return 0;
    }

    运行结果为:

    G:\desktop\huiwenTest>sievePrime.exe
    2    3    5    7    11   13   17   19   23   29
    31   37   41   43   47   53   59   61   67   71
    73   79   83   89   97


  • 相关阅读:
    Codeforces Round #564(div2)
    714
    1471
    UVa 11134
    UVa 1152 -4 Values whose Sum is 0—[哈希表实现]
    UVa 1374
    UVA 1343
    UVa 12325
    Yet Another Number Sequence——[矩阵快速幂]
    River Hopscotch-[二分查找、贪心]
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/12007667.html
Copyright © 2020-2023  润新知