【C语言】输出100~200之间的素数/质数(3种方法)
素数/质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。
·
1.什么是素数/质数
素数/质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数
2.输出100~200之间的素数/质数
第一种方法:先找出100~200之间所有的整数,再剔除非素数的数
因为有个条件是除 1 以外,所以第二次循环直接从 2 开始。如果循环过程中出现了能被 n 整除的数就证明它不是素数直接跳出,没必要再继续循环了。当 i 和 n 相等且没有其他数能整除 i 时,就证明 i 是素数。
#include <stdio.h>
void main() {
int n;
for (int i = 100; i <= 200;i++) {//找出100~200之间的整数
for (n = 2; n <= i;n++) {//用i去掉除1和它本身能被整除的数
if (i % n == 0) break;
}
if (i == n) {
printf("素数:%d\n", i);
}
}
}
第二种方法:和上面的相差不大,主要差别就是 i+=2
这样找出来的都是偶数。偶数不可能是素数,也就是只对奇数进行判断,效率相比第一种方法也会增加。
void main() {
int n;
for (int i = 101; i <= 200; i += 2) {//偶数不可能是素数,效率更快
for (n = 2; n <= i; n++) {
if (i % n == 0) break;
}
if (i == n) {
printf("素数:%d\n", i);
}
}
}
第三种方法:相比第二种方法多了平方根函数,效率相比之下更快
sqrt():计算平方根,需要引入math.h头文件。平方根,如果参数为负,则返回不定值、
如果平方根能被整除说明 i 不是素数,相反没有整除的就说明 i 是素数
void main() {
int n;
for (int i = 101; i <= 200; i+=2) {
//sqrt:计算平方根
int sqrti = (int)sqrt(i);//用开平方后效率更高
for (n = 2; n <= i; n++) {
if (i % n == 0) break;
}
if (i == n) {
printf("素数:%d\n", i);
}
}
}
关于C语言中输出100~200之间的素数到这里就结束了!如果您有什么更好的建议或想法可以留在评论区
第一次学C语言如果有不好的地方请留在评论区或私信我也可以,以后有空的话也会经常发博客。谢谢支持!~
更多推荐
已为社区贡献2条内容
所有评论(0)