欣欣celin 发表于 2014-2-16 14:26:42

求100~200的素数,为什么这样写不对??

#include"stdio.h"
#include"math.h"
void main()
{
      int m=100,i,k;
      k=sqrt(m);
      do
   {
          for(i=2; i<=k; i++)
          if(m%i == 0)
         {break;}
            if(i>k)
         {
               printf("%d\t",m);
            }
      }while(m++ <= 200);
}
为什么以上程式,运行结果会比正确答案多了以下几个数字,求详解,{:5_92:}盼复
121
143
169
187

swsm 发表于 2014-2-16 14:26:43

本帖最后由 swsm 于 2014-2-16 15:19 编辑

#include"stdio.h"
#include"math.h"
void main()
{
      int m=100,i,k;
      k=sqrt(m);   //你再这个地方就把k给固定成10了,而后来m++了,k还最大是10,所以121的11因数 没有被检测出来

   
      do
   {
          for(i=2; i<=k; i++)
          if(m%i == 0)
         {break;}
            if(i>k)
         {
               printf("%d\t",m);
            }
      m++;                                              //加这一句
      k=sqrt(m);                                    //再加这一句
      }while(m <= 200);                           //再改这一句
}
//这样就可以了,再交流   

欣欣celin 发表于 2014-2-16 16:26:08

:handshake原来如此,感谢感谢,又可以继续了,YEAH!!
页: [1]
查看完整版本: 求100~200的素数,为什么这样写不对??