素数:除了1和它本身之外不在有其他的因数
方法一:暴力比较法
从2开始一直比较到这个数减1的数,看有没有数被整除,若整除则不是素数
int is_prime(int prime) { int i = 0; for (i = 2; i < prime; i++) { if (!(prime % i)) { //不是素数 return 0; } } //是素数 return 1; } int main() { int i = 0; for (i = 100; i < 200; i++) { if (is_prime(i)) { printf("%d ", i); } } return 0; }
方法二:对于100~200之间偶数一定不是素数直接跳过
只需要将主函数内部的for循环改变即可
原来: for (i = 100; i < 200; i++) { } 改为: for (i = 101; i < 200; i += 2) { }
方法三:
对于一个数,其因数有两个,一定有一个因数,小于这个数开根号
int is_prime(int prime) { int i = 0 //double sqrt (double),返回值是double所以要强制类型转换 for (i = 2; i < (int)sqrt(prime); i++) { if (!(prime % i)) { //不是素数 return 0; } } //是素数 return 1; }