文章目录
- 一、实例描述
- 二、技术要点
- 三、代码实现
- 3.1 C 语言实现
- 3.2 Python 语言实现
- 3.3 Java 语言实现
- 3.4 JavaScript 语言实现
- 3.5 Go 语言实现
一、实例描述
求素数表中 100~200
之间的全部素数。运行结果如下图所示:
二、技术要点
素数是大于1的整数,除了能被自身和1整除外,不能被其它正整数整除。本示例的算法是这样的:让 i
被 2
到 根号i
除,如果 i
能被 2
到 根号i
之中任何一个整数整除,则结束循环,若不能被整除则要判断 j
是否是最接近或等于 根号i
的,如果是则证明是素数,否则继续下次循环。
三、代码实现
3.1 C 语言实现
/*================================================================
* Copyright (C) 2023 AmoXiang All rights reserved.
*
* 文件名称:05-求素数表中100~200之间的全部素数.c
* 创 建 者:AmoXiang
* 创建日期:2023年10月07日 11:09:43
* 描 述:
*
================================================================*/
#include <stdio.h>
#include <math.h>
int main() {
int num = 0;
int i = 0, j = 0;
for (i = 100; i < 201; ++i) {
int j_max = (int) sqrt(i);
// printf("%d\n", j_max);
for (j = 2; j < j_max + 1; ++j) {
if (i % j == 0) {
break;
} else if (j == j_max) {
num++;
printf("%d,", i);
if (num % 5 == 0) {
printf("\n");
}
}
}
}
printf("\n");
return 0;
}
程序运行结果如下图所示:
3.2 Python 语言实现
# -*- coding: utf-8 -*-
# @Time : 2023/10/7 10:23
# @Author : AmoXiang
# @File : 05-求素数表中100~200之间的全部素数.py
# @Software: PyCharm
# @Blog : https://blog.csdn.net/xw1680
import math
num = 0
# 第一种方案:暴力轮询 查看从2开始到数本身是否有能被数整除的数字 如果有说明不是素数
for i in range(100, 201):
for j in range(2, i):
if i % j == 0:
break
else:
num += 1
print(i, end=',')
if num % 5 == 0:
print()
print()
print('==============================================>')
# 第二种方案: 让i被2到根号i除,如果i能被2到根号i之中任何一个整数整除,则结束循环,
# 若不能被整除则要判断j是否是最接近或等于根号i的,如果是则证明是素数,否则继续下次循环。
num = 0 # 重新开始计数
for i in range(100, 201):
j_max = int(math.sqrt(i)) + 1 # 注意这里要加1
for j in range(2, j_max):
if i % j == 0:
break
else:
num += 1
print(i, end=',')
if num % 5 == 0:
print()
程序运行结果如下图所示:
3.3 Java 语言实现
/**
* ClassName: Exercise5
* Package: PACKAGE_NAME
* Description: 求100~200之间的素数
*
* @Author AmoXiang
* @Create 2023/10/7 10:49
* @Version 1.0
*/
public class Exercise5 {
public static void main(String[] args) {
int num = 0; //计数
for (int i = 100; i < 201; i++) {
int j_max = (int) Math.sqrt(i);
for (int j = 2; j < j_max + 1; j++) {
if (i % j == 0) {
break; // 如果有一个数能被整除就跳出循环
} else if (j == j_max) {
num++;
System.out.print(i + ",");
if (num % 5 == 0) {
System.out.println();
}
}
}
}
}
}
程序运行结果如下图所示:
3.4 JavaScript 语言实现
let num = 0;
for (let i = 100; i < 201; i++) {
let j_max = parseInt(Math.sqrt(i))
for (let j = 2; j < j_max + 1; j++) {
if (i % j == 0) {
break
} else if (j == j_max) {
num++;
process.stdout.write(i + ","); // 注意一下console.log会自动换行,如果使用console.log 可以结合数组来输出
if (num % 5 == 0) {
process.stdout.write("\n");
}
}
}
}
程序运行结果如下图所示:
3.5 Go 语言实现
package main
import "math"
import "fmt"
func main() {
var num int = 0 //用来计数
for i := 100; i < 201; i++ {
j_max := int(math.Sqrt(float64(i)))
//fmt.Println(j_max)
//fmt.Println(num)
for j := 2; j < (j_max + 1); j++ {
if i%j == 0 {
break
} else if j == j_max {
num++
fmt.Printf("%d,", i)
if num%5 == 0 {
fmt.Println()
}
}
}
}
fmt.Println()
}
程序运行结果如下图所示:
至此今天的学习就到此结束了,笔者在这里声明,笔者写文章只是为了学习交流,以及让更多学习编程的读者少走一些弯路,节省时间,并不用做其他用途,如有侵权,联系博主删除即可。感谢您阅读本篇博文,希望本文能成为您编程路上的领航者。祝您阅读愉快!
好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请点赞
、评论
、收藏
一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
编码不易,大家的支持就是我坚持下去的动力。点赞后不要忘了关注
我哦!