zoukankan      html  css  js  c++  java
  • 筛选法输出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


  • 相关阅读:
    平方十位数
    随意组合
    显示二叉树
    四阶幻方
    方格填数
    数字排列
    青蛙跳N阶(变态跳)
    Mysql可重复读、避免幻读原理
    动态规划典型例题--连续子数组的最大和
    行列有序的二维数组查找
  • 原文地址:https://www.cnblogs.com/CodeWorkerLiMing/p/12007667.html
Copyright © 2011-2022 走看看