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 给这个程序加注释 主要是前两个问题一定要回答 谢谢
问题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"); /*输出换行符*/ } 。
答:========================== 功能:选择排序(由小到大) 返回:指向链表表头的指针 ==========================...详情>>
问:挺简单的一C函数,不过我是初学者,暂时还不会写,请好心人多多帮忙!
答:int mystrlen(char *str) { int n = 0; while (*str) { n++; str++;} return n; } voi...详情>>