●问题描述:输出100~200之间的素数
●思路:谋定而后动。何谓素数?素数就是除了1和它本身,不会被其余任何数整除的数,这就叫素数。那么,我们只需要拿2~n-1一个个去试除n了。如果没有一个数能被整除,则说明这个数是素数。程序设计如下:#include <stdio.h> int main() { int i; int j; for (i = 100; i <= 200;i++)//生成1~200的数字 { //生成了数字以后,就要判断这个数是不是素数。如果要判定一个数为素数,就拿2~i-1依次去除这个数 for (j = 2; j <=i; j++)//生成2~i-1的数 { if (i % j == 0)//如果在这个期间,被整除了,则说明这个数不是素数 { break;//被整除则跳出for循环 } } //程序执行到这里,有两种情况,一种是这个数在期间被整除了,break跳出来,另一种是j生成到了等于i,自动结束循环了。当j=i的时候,说明这个期间都没一个数能够整除,除了这个数本身。 if (i == j) { printf("%d ", i);//输出素数 } } return 0; }
●该程序还能够进一步优化。
●思路:m=a*b,a和b中至少有一个数是小于等于开平方m的,那么,判断素数就只需要从2~它的开平方进