WeChall -Prime Factory-python
发布日期:2021-05-07 10:44:55 浏览次数:34 分类:精选文章

本文共 2100 字,大约阅读时间需要 7 分钟。

优化后的内容:


关于计算1000000以上的素数

Python实现代码

以下是Python版本的实现代码,用于计算1000000以上的素数。这个代码通过两个函数isprimeadd_all来判断一个数是否为素数以及将一个数的每一位数字相加。

代码解释

# coding:utf-8
import math
# 判断素数
def isprime(number):
for i in range(2, int(math.sqrt(number)) + 1):
if number % i == 0:
return 0
return 1
# 把一个数的每一位都加起来,成为一个新数
def add_all(number):
inumber = 0
while number != 0:
a = number % 10
inumber += a
number = number // 10
return inumber
# 主程序
if __name__ == '__main__':
count = 0
for number in range(1000000, 2000000):
addnumber = add_all(number)
if isprime(number) and isprime(addnumber):
if count < 2:
print(number)
count += 1
else:
exit(0)

代码功能解释

  • isprime函数:用于判断一个数是否为素数。通过检查从2到该数平方根的所有整数是否能整除该数来确定是否为素数。
  • add_all函数:用于将一个数的每一位数字相加。通过取模10获取每一位数字并累加,再将原数除以10直到变为0。
  • 主程序:遍历1000000到2000000之间的所有数,对于每个数,分别计算其自身和各位数字之和是否为素数。如果满足条件,输出该数并计数。

  • C++实现代码(完整版本)

    以下是C++版本的实现代码,用于类似功能的计算。

    #include 
    #include
    using namespace std;
    int a;
    bool IsPrime(int p) {
    a = (int)sqrt(p);
    for (int i = 2; i <= a; i++) {
    if ((p % i) == 0) {
    return false;
    }
    }
    return true;
    }
    int Add_Number(int number) {
    int add_number = 0;
    int one;
    while (number != 0) {
    one = number % 10;
    add_number += one;
    number = number / 10;
    }
    return add_number;
    }
    int main() {
    int add_number;
    for (int number = 1000034; ; number++) {
    add_number = Add_Number(number);
    if (IsPrime(number) && IsPrime(add_number)) {
    cout << number << endl;
    return 0;
    }
    }
    }

    代码功能解释

  • IsPrime函数:通过计算该数的平方根并检查从2到平方根之间的所有整数是否能整除该数,来判断是否为素数。
  • Add_Number函数:将输入数的每一位数字相加,返回累加结果。
  • main函数:从1000000开始,依次检查每个数及其数字之和是否为素数。如果满足条件,输出该数并结束程序。

  • 代码运行说明

    • Python版本:在运行时,会遍历1000000到2000000之间的所有数,计算每个数及其数字之和是否为素数。如果找到符合条件的数,会输出该数并计数(最多输出2个结果)。
    • C++版本:同样从1000000开始,依次检查每个数及其数字之和是否为素数,找到符合条件的数后输出并结束程序。

    总结

    以上代码用于计算1000000以上的素数,通过对每个数及其数字之和进行素数检测。无论是Python还是C++版本,都能够有效地完成任务。如果需要更高效的算法或更大的范围支持,可以根据需要进行优化和扩展。

    上一篇:整理 一些名词
    下一篇:Java11新特性

    发表评论

    最新留言

    能坚持,总会有不一样的收获!
    [***.219.124.196]2025年03月25日 00时27分46秒