C 练习实例36 - 求100之内的素数
题目:求100之内的素数。
程序分析:质数(prime number)又称素数,有无限个。一个大于1的自然数,除了1和它本身外,不能被其他自然数整除。
程序源代码:
实例 1
// Created by www.runoob.com on 15/11/9.
// Copyright © 2015年 菜鸟教程. All rights reserved.
//
#include <stdio.h>
#include <math.h>
int main() {
int n = 0;
for (int i = 2; i <= 100; i++) {
int is_prime = 1; // 假设i是素数
int k = (int)sqrt(i);
for (int j = 2; j <= k; j++) {
if (i % j == 0) {
is_prime = 0; // 如果i能被j整除,则i不是素数
break;
}
}
if (is_prime) {
printf("%d ", i);
n++;
if (n % 5 == 0) {
printf("\n");
}
}
}
return 0;
}
实例 2
#include <stdio.h>
#include <stdbool.h>
int main() {
bool is_prime[101]; // 创建一个布尔数组,初始化为true
for (int i = 2; i <= 100; i++) {
is_prime[i] = true;
}
for (int i = 2; i * i <= 100; i++) {
if (is_prime[i]) {
for (int j = i * i; j <= 100; j += i) {
is_prime[j] = false;
}
}
}
int n = 0;
for (int i = 2; i <= 100; i++) {
if (is_prime[i]) {
printf("%d ", i);
n++;
if (n % 5 == 0) {
printf("\n");
}
}
}
return 0;
}
#include <stdbool.h>
int main() {
bool is_prime[101]; // 创建一个布尔数组,初始化为true
for (int i = 2; i <= 100; i++) {
is_prime[i] = true;
}
for (int i = 2; i * i <= 100; i++) {
if (is_prime[i]) {
for (int j = i * i; j <= 100; j += i) {
is_prime[j] = false;
}
}
}
int n = 0;
for (int i = 2; i <= 100; i++) {
if (is_prime[i]) {
printf("%d ", i);
n++;
if (n % 5 == 0) {
printf("\n");
}
}
}
return 0;
}
以上实例输出结果为:
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
红途
471***[email protected]
参考方案:
红途
471***[email protected]
内拉小付
fux***[email protected]
参考方法:
内拉小付
fux***[email protected]
ronnyz
221***[email protected]
参考方法:
ronnyz
221***[email protected]