计算1000以内的总质数个数

#include <stdio.h>

int main() {

  int micro[500];       // 质数保存素组
  int number = 0;       // 质数个数
  
  micro[number++] = 2;  // micro[0]=2
  micro[number++] = 3;  // micro[1]=3, number=2

  unsigned long counter = 0;  // 计算处理次数

  int start = 5;    // 质数开始数字
  int end = 1000;   // 指数结束数字

  int inner ;   // 内层循环变量

  for (start=5; start <= end; start+=2) {
    int flag = 0; // 判断是否为不是指数
    
    // test
    //printf("%d\n", start);

    /*  
     *
     * 循环已经保存的指数为判断条件
     * 例如:100以内人数字
     * 20 * 5 = 100
     * 不被5整除的数字,20也不会被整除
     * */
    for(inner=1; counter++, micro[inner] * micro[inner] <= start; inner++) {
      counter++;

      // printf("%d\n", start);
      // return 0;
if (start % micro[inner] == 0) {
        flag = 1;
        break;
      }   
    }

    if (!flag)
      micro[number++] = start;
  }

  int j = 0;
  for(inner=0; inner < number; inner++) {
    j++;
    printf("%3d\t", micro[inner]);
    if (j % 7 == 0) {
      puts("");
      j = 0;
    }
  }

  printf("处理运算的次数:%lu\n", counter);
  printf("0~%d之间的共个数为:%d\n", end, number);

  return 0;
}
 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 101 103 107 
109 113 127 131 137 139 149 
151 157 163 167 173 179 181 
191 193 197 199 211 223 227 
229 233 239 241 251 257 263 
269 271 277 281 283 293 307 
311 313 317 331 337 347 349 
353 359 367 373 379 383 389 
397 401 409 419 421 431 433 
439 443 449 457 461 463 467 
479 487 491 499 503 509 521 
523 541 547 557 563 569 571 
577 587 593 599 601 607 613 
617 619 631 641 643 647 653 
659 661 673 677 683 691 701 
709 719 727 733 739 743 751 
757 761 769 773 787 797 809 
811 821 823 827 829 839 853 
857 859 863 877 881 883 887 
907 911 919 929 937 941 947 
953 967 971 977 983 991 997 
处理运算的次数:3774
0~1000之间的共个数为:168

原创文章,作者:rainbow,如若转载,请注明出处:http://www.178linux.com/71567

(0)
rainbowrainbow
上一篇 2017-03-22
下一篇 2017-03-22

相关推荐

  • 网络基础

    计算机网络     计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。 1、网络通信设备     网络通信设备种类繁多,且日新月异,网络通信设备通常由网络线缆、网卡、集线器、中继器、网桥、交换机、路由器等组成。 网桥(Bri…

    Linux干货 2016-12-16
  • 马哥门徒Linux运维课程笔记-第1天03讲 计算机及操作系统基础

    第1天03讲 计算机及操作系统基础   ◆  市面上主流Unix厂商简介         由于Unix系统的流行,当时行业中的主流大厂商都根据SysV或BSD开发了自己的版本,主要分类如下:       ●  IBM公司根据自己CPU硬件架…

    Linux干货 2015-03-23
  • Ansible安装及简单使用

    简介: ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具(puppet、cfengine、chef、func、fabric)的优点,实现了批量系统配置、批量程序部署、批量运行命令等功能。ansible是基于模块工作的,本身没有批量部署的能力。真正具有批量部署的是ansible所运行的模块,ansible只是提供一种框架。主要包…

    Linux干货 2016-08-07
  • 第六周:vim编辑器和cron计划任务的使用练习

    查看vim编辑器的使用介绍另见:http://afterdawn.blog.51cto.com/7503144/1855557 at及cront计划任务介绍见:http://afterdawn.blog.51cto.com/7503144/1864365 1、复制/etc/rc.d/rc.sysinit文件至/tmp目录,将/tmp/rc.sysinit文件…

    Linux干货 2016-10-26
  • M22 使用光盘修复Centos实验初探

    实验目的: 服务器由于文件丢失等原因造成无法启动,可以使用光盘引导启动服务器,然后对服务器进行修复。 实验环境: VMware12安装Centos6.8虚拟机 Centos6.8的光盘镜像 实验原理: 手动删除虚拟机上的rpm程序文件,使用光盘镜像恢复安装rpm程序。 实验过程: 1、     执行命令删除rpm程序,…

    2017-03-06
  • 网卡别名与多网卡绑定

    网卡别名 一块网卡可以配置多个ip地址,叫做网卡别名   对虚拟主机有用 格式形如:eth0:1  eth0:2 …… 实现方法:   在命令行中临时设置: ifconfig 命令: ifconfig eth0:0 192.168.1.100/24 演示:   修改配置文件 在/etc/sysconfig/networ…

    Linux干货 2016-09-05

评论列表(1条)

  • 马哥教育
    马哥教育 2017-03-29 17:18

    不错哦,C也用的这么溜了。