Chinaunix首页 | 论坛 | 博客
  • 博客访问: 63753
  • 博文数量: 15
  • 博客积分: 181
  • 博客等级: 入伍新兵
  • 技术积分: 125
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-07 00:27
文章分类

全部博文(15)

文章存档

2011年(14)

2010年(1)

最近访客

分类: C/C++

2011-09-12 22:54:02

目:程序test.c的功能是:选出大于100小于1000的所有的个位数字与十位数字之和被10除所得的余数恰是百位数字的所有素数(如293)。计算并输出上述这些素数的个数cnt以及这些素数的值的和sum

程序1如下:

#include

int cnt, sum; 

void writeDAT(); 

int isP(int num) 

{

  int i; 

  for(i = 2; i < num / 2; i++) 

if(num % i == 0)

      return 0; 

  return 1; 

}

void countValue()

{

       int j,bw,sw,gw;

       for(j=100;j<1000;j++)

       {

              if(isP(j))

              {

                bw=j/100;

             sw=(j-bw*100)/10;

              gw=j%10;

              if((gw+sw)%10==bw)

              {

                     cnt=cnt+1;

                     sum=sum+j;

              }

              }

       }

             

             

}

void main()

{

  cnt = sum = 0; 

  countValue();

  printf("素数的个数=%d\n", cnt);

 

  printf("满足条件素数值的和=%d", sum); 

  writeDAT();

}

void writeDAT()

{

  FILE *fp; 

  fp = fopen("out.dat", "w"); 

  fprintf(fp, "%d\n%d\n", cnt, sum); 

  fclose(fp); 

}

运行结果如下:

素数的个数=15

满足条件的素数值的和=6825Press any key to continue

但是在编程的过程中又一次不小心把那个括号给删除了程序变成如下所示:

程序2如下:

#include

int cnt, sum; 

void writeDAT(); 

int isP(int num) 

{

  int i; 

  for(i = 2; i < num / 2; i++) 

if(num % i == 0)

      return 0; 

  return 1; 

}

void countValue()

{

       int j,bw,sw,gw;

       for(j=100;j<1000;j++)

       {

              if(isP(j))

             

                bw=j/100;

             sw=(j-bw*100)/10;

              gw=j%10;

              if((gw+sw)%10==bw)

              {

                     cnt=cnt+1;

                     sum=sum+j;

              }

             

       }

             

             

}

void main()

{

  cnt = sum = 0; 

  countValue();

  printf("素数的个数=%d\n", cnt);

 

  printf("满足条件素数值的和=%d", sum); 

  writeDAT();

}

void writeDAT()

{

  FILE *fp; 

  fp = fopen("out.dat", "w"); 

  fprintf(fp, "%d\n%d\n", cnt, sum); 

  fclose(fp); 

}

这次运行的结果如下:

素数的个数=91

满足条件的素数的和=49662Press any key to continue

两个程序其中程序1正确的,现在很疑惑为什么少一个循环就变成错误的了???

 

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