用函数实现判断100~200之间的素数
写代码过程成中在if (1 == is_prime(i))语句后面加上了;(分号)
从而导致代码运行结果出现偏差。
#include#includeint is_prime(int i) { int j = 0; for (j = 2; j <= sqrt(i); j++) { if (i % j == 0) return 0; } return 1; } int main() { int i = 0; int count = 0; for (i = 100; i <= 200; i++) { if (1 == is_prime(i));//是素数返回1,不是返回0 { count++; printf("%d ", i); } } printf("\ncount=%d\n", count); return 0; }
if(条件)
语句1;
的代码,当if(条件)后面加了分号之后,将成为
if(条件);
语句1;
这样,当条件表达式为真或不为真,都会执行语句1,且为真时,执行的是空语句,即分号前的语句,相当于:
if( 条件) 空语句;
语句1;
在你的代码中第十八行,if后面加了分号,意味着不管1 == is_prime(i)是否为真,都会直接执行count++;printf("%d ", i);。
所以运行结果就是100~200之间的数
将if (1 == is_prime(i))后的分号去掉
#include#includeint is_prime(int i) { int j = 0; for (j = 2; j <= sqrt(i); j++) { if (i % j == 0) return 0; } return 1; } int main() { int i = 0; int count = 0; for (i = 100; i <= 200; i++) { if (1 == is_prime(i))//是素数返回1,不是返回0 { count++; printf("%d ", i); } } printf("\ncount=%d\n", count); return 0; }
Copyright © 2023 leiyu.cn. All Rights Reserved. 磊宇云计算 版权所有 许可证编号:B1-20233142/B2-20230630 山东磊宇云计算有限公司 鲁ICP备2020045424号
磊宇云计算致力于以最 “绿色节能” 的方式,让每一位上云的客户成为全球绿色节能和降低碳排放的贡献者