C 练习实例12
题目:判断 101 到 200 之间的素数。
程序分析:判断素数的方法:用一个数分别去除 2 到 sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
实例 1
// Created by www.www.fxku.cn on 15/11/9.
// Copyright ? 2015年 小库网. All rights reserved.
//
#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;
}
以上实例输出结果为:
101 103 107 109 113 127 131 137 139 149 151 157 163 167 173 179 181 191 193 197 199
实例
#include <stdio.h>
#include <stdbool.h>
// 函数:判断一个数是否为素数
bool isPrime(int num) {
if (num <= 1) return false;
if (num <= 3) return true;
if (num % 2 == 0 || num % 3 == 0) return false;
for (int i = 5; i * i <= num; i += 6) {
if (num % i == 0 || num % (i + 2) == 0) return false;
}
return true;
}
int main() {
printf("素数在 101 到 200 之间的列表:\n");
for (int i = 101; i <= 200; i++) {
if (isPrime(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
#include <stdbool.h>
// 函数:判断一个数是否为素数
bool isPrime(int num) {
if (num <= 1) return false;
if (num <= 3) return true;
if (num % 2 == 0 || num % 3 == 0) return false;
for (int i = 5; i * i <= num; i += 6) {
if (num % i == 0 || num % (i + 2) == 0) return false;
}
return true;
}
int main() {
printf("素数在 101 到 200 之间的列表:\n");
for (int i = 101; i <= 200; i++) {
if (isPrime(i)) {
printf("%d ", i);
}
}
printf("\n");
return 0;
}
代码分析:
isPrime
函数:判断一个数是否为素数。它首先排除一些明显的非素数,然后使用 6k ± 1 形式来检查剩余的可能因子,从而提高效率。main
函数:遍历 101 到 200 之间的所有整数,并使用isPrime
函数检查每个数是否为素数。如果是,就打印出来。