比较(用函数方法)打印100到200之间的单数,素数,并且请教各位读者,如何区别的不同
在这里,笔者仅仅改变一个代码的顺序,却出现了俩种截然不同的运行结果,表示大为震惊!
但却是又不知道为什么,所以显得略为尴尬!故此,用代码加运行结果,来向大众请教。。。。。
用函数来判断100到200之间的单数,并输出单数
//写一个函数,可以判断一个数是不是单数 //单数返回1;不是单数返回0 #include <stdio.h> int is_prime(int n) { int j = 0; for (j = 2; j < n; j++) { if (n % j == 0) return 0; if (n = j) return 1; } //return 1; } int main() { //打印100到200之间的单数 int i = 0; for (i = 100; i <= 200; i++) { if (is_prime(i) == 1) printf("%d ", i); } return 0; }
运转结果为:
在这里,可以清晰的看出运转结果中,每个数字之间相差2,故为单数
不服输的笔者认为,for循环为什么要将if (n = j) return 1; 放在里面,那放在外面是不是....?
因此有了下文:
用函数来判断100到200之间的单数,并输出素数(质数)
具体代码为:
//写一个函数,可以判断一个数是不是素数 //素数返回1;不是素数返回0 #include <stdio.h> int is_prime(int n) { int j = 0; for (j = 2; j < n; j++) { if (n % j == 0) return 0; } if (n = j) return 1; } int main() { //打印100到200之间的素数 int i = 0; for (i = 100; i <= 200; i++) { if (is_prime(i) == 1) printf("%d ", i); } return 0; }
运行结果为:
在这里,可以清晰的看出运转结果中,每个数字之间相差不规则,且没有因式,故为素数(质数)
具体的代码已经罗列出,细心的读者应该不难看出,笔者仅仅是更改了函数中函数体的for循环中的一部分代码
将单数中的:
for (j = 2; j < n; j++) { if (n % j == 0) return 0; if (n = j) return 1; }
更改为:
for (j = 2; j < n; j++) { if (n % j == 0) return 0; } if(n=j) return 1;
简简单单的一个代码的改变,却将运行结果发生了巨大改变
紧急求教,笔者之前还能看懂点自己写的代码,但是经过这个出乎意料的改变,突然间发现,迷茫了