Chinaunix首页 | 论坛 | 博客
  • 博客访问: 12875996
  • 博文数量: 1293
  • 博客积分: 13501
  • 博客等级: 上将
  • 技术积分: 17974
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-08 18:11
文章分类

全部博文(1293)

文章存档

2019年(1)

2018年(1)

2016年(118)

2015年(257)

2014年(128)

2013年(222)

2012年(229)

2011年(337)

分类:

2012-11-20 09:39:44

一、案例工程


1、案例代码


  1. #include <stdio.h>
  2. #include <stdbool.h>
  3. #include <math.h>
  4. #define YES 1
  5. #define NO 0

  6. int isprime(int x)
  7. {
  8.     int i = 2;
  9.     bool flag = false;
  10.     for(; i < sqrt(x); i++)
  11.     {
  12.         if(x % i == 0)
  13.         {
  14.             flag = false;
  15.             return NO;
  16.         }
  17.         else
  18.             flag = true;
  19.     }
  20.     return YES;
  21. }

  22. void prove_1_even_has_2_prime(int x)
  23. {
  24.     int i = 2;
  25.     for (; i < x/2; i++)
  26.     {
  27.         if(isprime(i))
  28.         {
  29.             if(isprime(x-i))
  30.                 printf("%d is a even,the prime are : %d,%d\n",x,i,x-i);
  31.         }
  32.     }
  33. }

  34. int main()
  35. {
  36.     int a;
  37.     printf("Input one even :\n");
  38.     scanf("%d",&a);
  39.     if(a%2 == 0)
  40.         prove_1_even_has_2_prime(a);
  41.     else
  42.         printf("%d is not a ever number\n",a);

  43.     return 0;
  44. }

2、编译过程


  1. [root@localhost arithmetic]# gcc -o evenAndprime evenAndprime.c -lm

注意要加上-lm

 

3、实数验证


  1. [root@localhost arithmetic]# ./evenAndprime
  2. Input one even :
  3. 50
  4. 50 is a even,the prime are : 3,47
  5. 50 is a even,the prime are : 7,43
  6. 50 is a even,the prime are : 9,41
  7. 50 is a even,the prime are : 13,37
  8. 50 is a even,the prime are : 19,31

 

二、算法分析

image

 

 

    算法思想:如果需验证的数置于变量X中,则可依次从X中减去i,其中i从2变化到X/2。

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