想不明白的.....最好能再想想
如果实在想不明白,教你个办法,用printf()在程序运行过程中监视所有变量变化的情况,再用getch()进行单步跟踪,那样你就能很轻松的了解程序的数据流动情况了
“如闻仙乐耳暂明”。请LZ好好听听吧。
落霞与孤鹜齐飞,秋水共长天一色! 心有多大,路有多宽。三教九流,鸡鸣狗盗。兼收并蓄,海纳百川。
for(j=2;j*j<=i&&i%j;j++); //解释如下
循环条件:1。首先要求除数j小于等于i的算术平方根,
2。其次要求被检测的i不是j的倍数。
循环体呢:空语句(什么也不干)。
该语句等价于
for(j=2;j*j<=i;j++)if(i%j==0)break;
该语句还等价于
for(j=2; ;j++)if(j*j>i||i%j==0)break;
总之,break条件是循环条件的否定命题。
就本题而言,根据德·摩根律,
!(j*j<=i&&i%j!=0)可化简为
!(j*j<=i)||!(i%j!=0)也即
(j*j>i || i%j==0)
高中的“集合论”、大学的“离散数学”重要呵。
for(j=2;j*j<=i&&i%j;j++); //解释如下
循环条件:1。首先要求除数j小于等于i的算术平方根,
2。其次要求被检测的i不是j的倍数。
循环体呢:空语句(什么也不干)。
该语句等价于
for(j=2;j*j<=i;j++)if(i%j==0)break;
该语句还等价于
for(j=2; ;j++)if(j*j>i||i%j==0)break;
总之,break条件是循环条件的否定命题。
就本题而言,根据德·摩根律,
!(j*j<=i&&i%j!=0)可化简为
!(j*j<=i)||!(i%j!=0)也即
(j*j>i || i%j==0)
高中的“集合论”、大学的“离散数学”重要呵。
"路漫漫兮, 吾将上下而求索" 谢谢.