前面为什么for循环中i<j,后面为什么又要i>=j才可以
#include<stdio.h>
#include<stdlib.h>
int main(void)
{
int i, j; //定义循环变量
int m, n, sum;
int k; //用来标记当前是第几个素数,默认k=1
sum = 0;
k = 1;
printf("请输入n和m的值:\n");
do
{
scanf_s("%d %d", &n, &m);
} while (0 >= n || n>m || m>200);//当输入的值不符合条件,即如果输入的不是0<=n<=m<=200时,进入无限循环
printf("第n个素数到第m个素数之间所有的素数为:\n");
for (j = 2;; j++)
{
if (k>m) //判断加素数的次数是否大于m
break; //是则跳出循环
for (i = 2; i<j; i++)
{
if (j%i == 0)
break;//判断是否为素数,不是则跳出循环
}
if (i>=j)
{
if (k >= n&&k <= m)
sum += j;
k++;
printf("%-5d", j);//输出占5个字符的整数,并且左对齐
}
}
printf("\n第n个素数到第m个素数之间所有的素数的和为:%d\n", sum);
system("pause");
return 0;
}
for (i = 2; i<j; i++) //这是从2~i-1逐个检查
{
if (j%i == 0)
break;//判断是否为素数,不是则跳出首模循环
}
if (i>=j) //如果在上面的循环中一个也没有满足跳出循环的条件(即i是素巧芹姿数),由于最后一次循环是i=j-1,没有跳出循环,于是循环结束后执行 i++ 后就为i==j,因不满足循环条件孝绝 i<j 而退出循环。所以,当 i==j时就表示 i 是一个素数了。
{
if (k >= n&&k <= m)
sum += j;
k++;
printf("%-5d", j);//输出占5个字符的整数,并且左对齐
}