素数:只能被1或自身整除的整数(n)
方法1:运用for循环,遍历2到n的前一个数,判断能否整除n,如果不能整除,则为素数
源代码:
#include<stdio.h>
#include<stdlib.h>
int main() {
int n = 0, i = 0;
for (n = 100; n <= 200; ++n) {
for (i = 2; i < n; ++i) {
if (n%i == 0)
//判断从2到n的前一个数能否整除n
break;
}
if (n == i) {
//如果n==i,则表示从2到n的前一个数都不能整除n
printf("%d\n", n);
}
}
system("pause");
return 0;
}
缺点:如果数据过大,则需要遍历的数据将会很多,程序运行时间长效率低
方法2:任何一个数都可以写成两个数相乘的形式。如果某个不是素数的数n写为两数相乘的形式,其中必有一个数小于等于n/2,如果在n/2前找到一个数能整除n,则n/2到n之间必定也有一个数可以整除n;如果n/2之前没有数可以整除n,那么n/2后也没有一个数可以整除n,则n是素数。
#include<stdio.h>
#include<stdlib.h>
int main() {
int n = 0, i = 0;
for (n = 100; n <= 200; ++n) {
for (i = 2; i <= n/2; ++i) {
if (n%i == 0)
//判断从2到n/2之间的数能否整除n
break;
}
if (i >= n/2) {
//如果i >= n/2,则表示从2到n/2之间的数都不能整除n
printf("%d\n", n);
}
}
system("pause");
return 0;
}
优势:相比方法一,节约一半的程序运行时间,提高效率