质数又称素数。 指在一个大于1的自然数中,除了1和此整数自身外,不能被其他自然数整除的数。
NO.1:方法一
#include<stdio.h>
#include<windows.h>
int main(){
int i = 0;
int j = 0;
for (i = 100; i <= 200; i++){
for ( j = 2; j <= i - 1; j++){
if (i%j == 0) //判断其能否被除了1和它本身外的其他数整除,能整除则不是素数。
break;
}
if (j>i - 1){
printf("%d ",i); //若不满足以上条件则当 i 为素数
}
}
printf("\n");
system("pause");
return 0;
}
运行结果
NO.2:方法二
改进之处:加入了累加器,便于统计素数的个数。
#include<stdio.h>
#include<windows.h>
int main(){
int i = 0;
int j = 0;
int count = 0; //计数器
for (i = 100; i <=200; i++){
for (j = 2; j <= i - 1; j++){
if (i%j == 0) //判断其能否被除了1和它本身外的其他数整除,能整除则不是素数。
break;
}
if (j>i - 1){
count++; //记录满足条件的数的个数
printf("%d ", i);
if (count % 5 == 0){
printf("\n"); //当计数器的数字能满足模5为0时,换行继续输出。效果如下图
}
}
}
printf("\ncount = %d \n",count); //输出素数的个数
system("pause");
return 0;
}
运行结果
NO.3:方法三
改进之处:引用sqrt进行开方运算,原因为一个数的被除数肯定小于或者等于其开方后的结果
#include<stdio.h>
#include<math.h>
#include<windows.h>
int main(){
int i = 0;
int j = 0;
int count = 0;
for (i = 101; i <= 200; i += 2){
for (j = 2; j <= sqrt(i); j++){
if (i%j == 0) //判断其能否被除了1和它本身外的其他数整除,能整除则不是素数。
break;
}
if (j>sqrt(i)){
count++;
printf("%d ", i);
if (count % 5 == 0){
printf("\n");
}
}
}
printf("\ncount = %d \n", count); //输出素数的个数
system("pause");
return 0;
}
运行结果
NO.4:方法四
改进之处:用 i/2 做为判断依据。其原因为一个数的被除数肯定小于或等于它的一半。
#include<stdio.h>
#include<math.h>
#include<windows.h>
int main(){
int i = 0;
int j = 0;
int count = 0;
for (i = 101; i <= 200; i += 2){
for (j = 2; j <= i/2; j++){
if (i%j == 0) //判断其能否被除了1和它本身外的其他数整除,能整除则不是素数。
break;
}
if (j>i/2){
count++;
printf("%d ", i);
if (count % 5 == 0){
printf("\n");
}
}
}
printf("\ncount = %d \n", count); //输出素数的个数
system("pause");
return 0;
}
运行结果