百科知识

100-200间的全部素数程序有几个问题程序如下:#incl

2008-02-13 11:41:551***
程序如下: #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 给这个程序加注释 主要是前两个问题一定要回答 谢谢 100---200间的全部素数程序有几个问题程序如下:#includestdio.h#includemath.hvoidmain?

最佳回答

  •   问题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
  • 很赞哦! (103)