题目描述:编写程序找出100~200之间的个素数,并输出所有素数。
素数的定义:在大于1的自然数中,除了1和它本身以外不再有其他因数的数称为质数。 所以本题的思路是将一个数除以2到本身减1,不过我们只需要将一个数除以2到本身的开根号即可,这样更加提高程序的效率。
# include <stdio.h># include <math.h>int main(){ int i, m, k, h = 0, leap = 1; for (m=100; m<=200; m++) { k = (int)sqrt(double(m));//当一个数若不能被从2开始,到自身开根号为止这个范围内的整数整除,它就是素数了。 //这样减少运算次数,提高了程序效率 for (i = 2; i<=k; i++) { if (m%i == 0) { leap=0; break; //此处的break终止的是整个for循环(注:在for中的if中如果执行了break就终止了整个for循环) } } if (leap) { PRintf("%-4d", m); //三位数,加多一个空格 h++; if (h % 10 == 0) //够十个,过下一行 printf("/n"); } leap = 1; //leap重新赋值1 } printf("/n");}运行环境:vs2010 运行结果:
新闻热点
疑难解答