爱问知识人 爱问教育 医院库

100---200间的全部素数程序有几个问题

首页

100---200间的全部素数程序有几个问题

程序如下:

  #include <stdio.h>
  #include <math.h>
  void main()
  {
   int m,i,k,n=0;
   for(m=101;m<=200;m=m+2)
    {
     k=sqrt(m)
     for(i=2;i<=k;i++)
        if(m%i==0)
          break;
      if(i>=k+1)
         {
          printf("%d",m);
          n=n+1;
          }
       if(n%10==0)
          printf("\n");
    }
    printf("\n");

}



问题1 
 for(m=101;m<=200;m=m+2)
数上写的是要求100-200之间的素数,这个程序问什么要从101开始,而不从100开始呢?  m为什么+2,而不是m++?


问题2
if(i>=k+1)
 {
  printf("%d",m);
  n=n+1;
  }
解释一下这一段程序




问题3

给这个程序加注释




主要是前两个问题一定要回答










谢谢
































































































   

提交回答
好评回答
  • 2008-02-13 13:45:59
      问题1: 
    for(m=101;m=k+1) 
    { 
    printf("%d",m); 
    n=n+1; 
    } 
    回答:上面这段代码要跟前面的for(i=2;i=k+1) 说明m这个数从2开始,一直到k都不能被整除,就说明这个m是一个素数,可以打印输出。
      而其中使用的k变量,值是m每次的sqrt(m)开平方根。之所以开平方根,就是为了减少判断整除的次数(其中道理LZ可以仔细想想)。
       加注释: #include /*包含标准输入输出头文件*/ #include /*包含数学头文件*/ void main() /*主函数*/ { int m,i,k,n=0; /*声明4个int型变量*/ for(m=101;m=k+1) /*如果经过循环,i值大于等于k+1,说明这个m已经把从2开始至k的值都整除过了,说明m是一个质数*/ { printf("%d",m); /*输出m值*/ n=n+1; /*n是计数器变量,用作控制屏幕输出时换行,每10个一行*/ } if(n%10==0) /*如果n是10的倍数,则输出一个换行符*/ printf("\n"); /*输出换行符*/ } printf("\n"); /*输出换行符*/ } 。

    心***

    2008-02-13 13:45:59

类似问题

换一换
  • C/C++ 相关知识

  • 电脑网络技术
  • 电脑网络

相关推荐

正在加载...

热点检索

  • 1-20
  • 21-40
  • 41-60
  • 61-80
  • 81-100
  • 101-120
  • 121-140
  • 141-160
  • 161-180
  • 174-193
返回
顶部
帮助 意见
反馈

确定举报此问题

举报原因(必选):