如何编写起始值为2且包含int变量upperBound的C语言for循环?
如何编写起始值为2且包含int变量upperBound的C语言for循环?
你写的代码里,循环条件i <= upperBound其实已经是满足需求的正确写法——<=表示“小于或等于”,这样当i的值等于upperBound时,循环依然会执行一次,刚好实现“包含上限”的要求。
给你拆解下for循环的三个核心部分,帮你彻底理清楚:
- 第一部分
int i=2:完成循环变量的初始化,把起始值设为2,这部分没问题。 - 第二部分
i <= upperBound:循环的执行判断条件,只要这个条件结果为真,循环体就会继续运行。用<=而非<,就能让i取到upperBound这个目标值。 - 第三部分
i++:每次循环结束后,将i的值自增1,让循环变量逐步趋近上限,避免死循环。
另外注意你代码里的两个小问题:
- printf的字符串引号嵌套错误,正确写法是
printf("%d is a prime number.", num); - 质数判断逻辑颠倒了:如果
num % i == 0,说明num能被i整除,那num不是质数,你当前的逻辑写反了。
修正后的完整代码示例:
// 假设num和upperBound已提前正确定义并赋值 for (int i = 2; i <= upperBound; i++) { if (num % i == 0) { printf("%d is NOT a prime number.\n", num); break; // 找到一个因数就可以提前退出循环,提升效率 } } // 如果循环正常结束(未触发break),说明num不存在2到upperBound之间的因数,是质数 printf("%d is a prime number.\n", num);
内容的提问来源于stack exchange,提问作者toaster
相关产品推荐
相关产品推荐

