关于素数的不解

来源:百度知道 编辑:UC知道 时间:2024/05/21 23:05:08
/* 判断data是否为素数 */
half = data/2;
for (i=2; i<=half; i++)
if (data%i == 0)
break;
if (i > half) /* 如果此时i>half说明data是一个素数 */

我不明白的是i是怎么大于half的啊?
for语句不是说i<=half吗

for (i=2; i<=half; i++)
if (data%i == 0)
break;
是的,正是因为i<=half才使得i可能大于half.
因为for循环要结束的话,首先要不满足i<=half才能结束。(或者满足data%i==0跳出循环)。
因此,如果不是break跳出循环,那么要结束for循环i要怎样才行呢?
循环的最后一次:i = half时,循环,循环完毕i++,这不就大于了吗?

for (i=2; i<=half; i++)
其中的i++;在每次运行中都要加1

for (i=2; i<=half; i++)
if (data%i == 0)
break;
这句话中for循环后面没有大括号,说明for循环内部只有if一句话,再后面的if (i > half)已经不属于for循环的范围了。