Chinaunix首页 | 论坛 | 博客
  • 博客访问: 549756
  • 博文数量: 181
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 1498
  • 用 户 组: 普通用户
  • 注册时间: 2013-12-22 15:17
个人简介

用发呆的时间来理清自己的思绪

文章存档

2015年(7)

2014年(134)

2013年(40)

分类: C/C++

2014-06-06 22:36:09

        质数(prime number)又称素数,有无限个。一个大于1的自然数,如果除了1和它自身外,不能被其他自然数整除(除0以外)的数称之为素数(质数);否则称为合数。根据算术基本定理,每一个比1大的整数,要么本身是一个质数,要么可以写成一系列质数的乘积;而且如果不考虑这些质数在乘积中的顺序,那么写出来的形式是唯一的。
在自然数域内,质数是不可再分的数,是组成一切自然数的基本元素。 比如,10 是由两个 2 和两个 3 组成的,正如水分子是由两个 H 原子和一个 O 原子组成的一样。只是和化学世界不同,质数有无穷多个,因此算术世界的元素也就有无穷多个。算术世界内的一切对象、定理和方法,都是由其基本元素质数组成的。
         那么如何求出一个质数呢?
         程序代码如下:

点击(此处)折叠或打开

  1. #include <stdio.h>

  2. int main()
  3. {
  4.     int i = 2,j = 2,cout = 0;

  5.     for (i = 2; i <= 100; i++)
  6.     {
  7.         //循环退出有两种情况
  8.         //1.若一个数能被i整出,则这个数肯定不是质数,退出内层循环,
  9.         //此时很显然i的值和j的值不相等,所以if的命令不会被执行
  10.         
  11.         //2.在j<i的范围内,i%j的值都不等于0,直到j=i时,退出循环
  12.         //此时的i便是质数。
  13.         

  14.         //3.举例说明,如果此时i=7,i%2,3,4,5,6的值都不等于0,7%6之后
  15.         //执行j++,此时j=7,再判断条件,不成立,退出内层循环。接着
  16.         //执行下面的if语句,此时i==j成立,所以此时j是一个质数

  17.         //总结:由j<i不成立退出的j是质数,否则不是质数;
  18.         for(j = 2; j < i; j++)
  19.         {
  20.             if(i % j == 0)
  21.             {
  22.                 break;
  23.             }
  24.         }
  25.         
  26.         if(j == i)
  27.         {
  28.             printf("%-5d",i);

  29.             /**To setup 5 num in a line**/
  30.             cout ++;

  31.             if(cout % 5 == 0)
  32.             {
  33.                 putchar('\n');
  34.             }

  35.     }


  36.     putchar('\n');


  37.     return 0;
  38. }
执行结果如下:

点击(此处)折叠或打开

  1. litong@ltubuntu:~/studyc/c05$ ./a.out
  2. 2 3 5 7 11
  3. 13 17 19 23 29
  4. 31 37 41 43 47
  5. 53 59 61 67 71
  6. 73 79 83 89 97

阅读(931) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~