外层循环对start〜end之间的每个数进行迭代,逐一检查其是否为素数。外层循环的循环变量用变量m表示,m即代表当前需要进行判断的整数,显然其取值范围为start≤m≤end。
内层循环稍显复杂,完成的功能是判断当前的m是否为素数。设内循环变量为m,程序设计时i从2开始,直到
为止。用i依次去除需要判定的整数m,如果m能够被
中的任何一个整数所整除,则表示i必然小于或等于
,则可以确定当前的整数m不是素数,因此,应提前结束该次循环。如果n不能被
中的任何一个整数所整除,则在完成最后一次循环后,i还需要加1,即
,之后才终止循环。此时,可以确定当前的整数m为素数。
可以使用标志位flag来监控内外循环执行的情况。在定义变量时将flag初值设为1,在内层循环中判断时,如果m能够被
中的任何一个整数所整除,则在内循环中将flag设置为0。如果m不能被
中的任何一个整数所整除,则在内循环中不会修改flag标志的值,退出内循环后它的值仍为1。此时在外循环中对flag的值进行判断,如果flag=0,则显然当前的m不是素数,如果flag=1,则当前的m是素数,应该将其打印出来。
还需要注意的是,在外循环中,每次要进行下一次迭代之前,要先将flag标志再次置为1。
程序流程图:
下面是完整的代码:#include#includeint main() { int start, end, i, k, m, flag=1, h=0; do { printf("Input START and END:"); scanf("%d%d", &start, &end); }while(!(start>0 && start