哪个大神能给我解释一下 这个c语言程序怎么翻译

2024-11-16 22:34:42
推荐回答(2个)
回答(1):

程序的功能是输出从100~200之间(不包括100和200)的所有素数,10个一行。


#include   //加载头文件stdio.h
#include    //加载数学库头文件math.h
main()              //定义主函数
{                   
int m,k,i,n=0;       //定义变量
for(m=101;m<200;m+=2)//素数除了2以外,都是奇数,因此只考察奇数
{
k=sqrt((double)m);  //将m的算术平方根的整数部分赋给k,这条语句是为了简化计算
for(i=2;i<=k;i++)   //i从2到k循环
if(m%i==0)          //如果m能被i整除
break;              //中断,这个数不是素数,考察下一个数
if(i>k)             //如果i大于k,这个数是素数
{
printf("%5d",m);   //输出m的值,右对齐,占5位
n++;               //计数器n增加1
}
if(n%10==0)        //如果n能被10整除
printf("\n");      //换行
}
printf("\n");     //换行
getch();          //程序执行后,等待输入任意字符结束
}

回答(2):

要看懂这个代码,首先你要知道质数怎么求。有一种方法就是:如果一个数不能被2~它的开方数整除,那么这个数就是质数。比如对于17,它的开方数取整数部分是4,而17不能被2,3,4整除,这样就可以得出17是质数。
现在来看这段代码,m从101加到200,每次加2,其实是想寻找100~200之间的质数。因为偶数肯定不是质数,所以循环跳过了所有的偶数。通过对m开方(sqrt函数是开平方),得到的值保存在k中,k就是m的开方数;然后i从2开始累加到k,依次判断m是不是能被i整除,最后观察要是不能,就输出m的值,如果能则不输出;同时如果找到并输出了一个质数,就给n的值加1,n是累加变量,用来记录总共输出了多少个数,要是输出够了10个,就换一行。
应该讲明白了吧,哪里不清楚再问。。。。