题目:判断101-200之间有多少个素数,并输出所有素数。
程序分析:首先明白什么是素数,只能被1和本身整除的数,用循环遍历101-200之间的数,然后用101~200间的书整出2到该数前面一个数,比如是113,我们113整除2~112之间的数,只要这里的数整出都不等于0,则可以判断这个数是素数;
#include <stdio.h> int main() { int i,j; int count=0; for (i=101; i<=200; i++) { for (j=2; j<i; j++) { // 如果j能被i整出在跳出循环 if (i%j==0) break; } // 判断循环是否提前跳出,如果j<i说明在2~j之间,i有可整出的数 if (j>=i) { count++; printf("%d ",i); // 换行,用count计数,每五个数换行 if (count % 5 == 0) printf("\n"); } } return 0; }
另一种是用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
#include <stdio.h> #include <math.h> int main() { int i,j,k,leap=1; int count=0; for (i=101; i<=200; i++) { k=sqrt(i+1); for (j=2; j<=k; j++) { if (i%j==0) { leap=0; break; } } if (leap) { count++; printf("%d ",i); if (count % 5 == 0) printf("\n"); } leap=1; } return 0; }
运行结果: