判别m是否为素数
#include <stdio.h> int main() { int i, m; int is_prime=1; scanf("%d", &m); for(i=2; i<=m-1; i++) { if(m%i==0) is_prime=0; } if(is_prime==1) printf("%d 是素数!\n", m); else printf("%d 不是素数!\n", m); return 0; }
改进:及时退出(更省时的算法)
#include <stdio.h> int main() { int i, m; int is_prime=1; scanf("%d", &m); for(i=2; i<=m-1; i++) { if(m%i==0) { is_prime=0; break; //及时退出 } } if(is_prime==1) printf("%d 是素数!\n", m); else printf("%d 不是素数!\n", m); return 0; }
改进:再减少循环次数
#include <stdio.h> #include <math.h> int main() { int i, m, k; int is_prime=1; scanf("%d", &m); k=sqrt(m); for(i=2; i<=k; i++) //最多循环到 k { if(m%i==0) { is_prime=0; break; //及时退出 } } if(is_prime==1) printf("%d 是素数!\n", m); else printf("%d 不是素数!\n", m); return 0; }
找出100~200间的全部素数
#include <stdio.h> #include <math.h> int main() { int i, m, k, n=0; int is_prime; for(m=101; m<=200; m=m+2) { is_prime=1; k=sqrt(m); for(i=2; i<=k; i++) //最多循环到 k { if(m%i==0) { is_prime=0; break; //及时退出 } } if(is_prime==1) { printf("%d\t", m); n++; if(n%5==0) printf("\n"); } } return 0; }