求素数和 bjfu1020 素数

本文介绍了一种用于计算一组整数中所有素数之和的算法。输入为一系列整数,输出为这些整数中所有素数的总和。文章通过示例详细解释了算法的实现过程。

描述

对于给定的一个正整数序列,求它包含的所有素数的和。  
输入
输入的第一行是一个整数n,在区间[1,10000]之中。后面紧跟n行,每一行是一个整数,在区间[1,100]之中。
输出
对输入的n个正整数中所有的素数求和,并把和在一行中输出。
样例输入
5
8
2
3
7
10

样例输出

12

= =。隔了太久,几近不会求素数,果然自己太弱了。

#include <iostream>
#include <cmath>
using namespace std;

int main(){
	int n,sum=0,i,flag,a;
	cin>>n;
	while (n--){
		cin>>a;
		flag=1;
		if (a==1) //1既不是素数也不是和数啦= =,不要把1加上去。
			flag=0;
		else { //sqrt()参数是float或者double,不能是int...
			for (i=2;i<=sqrt((double)a);i++)  //这里是小于等于,木有等于会错的。例如 4
				if (a%i==0){
					flag=0;
					break;
				}
		}
		if (flag)
			sum+=a;
	}
	cout<<sum<<endl;
	return 0;
}


### 定义 质数素数在数论中常被看作是等同的概念,素数是指大于 1 且只能被 1 自身整除的自然数[^1][^2]。 ### 性质 - **基本整除性质**:质数大于 1,并且除了 1 它自身外,不能被其他自然数整除。例如 2、3、5、7 等,2 只能被 1 2 整除,3 只能被 1 3 整除。 - **质数的个数无限**:欧几里得在《几何原本》中已经证明了质数的个数是无限的。假设质数的个数是有限的,设这些质数为 $p_1,p_2,\cdots,p_n$,考虑数 $N = p_1\times p_2\times\cdots\times p_n+1$。如果 $N$ 是质数,那么就找到了一个不在假设中的质数;如果 $N$ 是合数,那么它必然能被某个质数整除,但这个质数不可能是 $p_1,p_2,\cdots,p_n$ 中的任何一个,这也产生了矛盾,所以质数的个数是无限的。 - **算术基本定理**:任何一个大于 1 的自然数 $N$,如果 $N$ 不为质数,那么 $N$ 可以唯一分解成有限个质数的乘积,即 $N = p_1^{a_1}p_2^{a_2}\cdots p_k^{a_k}$,其中 $p_1 < p_2<\cdots < p_k$ 是质数,$a_1,a_2,\cdots,a_k$ 是正整数。例如,$60 = 2^2\times3\times5$。 ### 相关知识 - **质数的判断方法**: - **普通循环法**:判断一个数 $n$ 是否为质数,可从 2 到 $\sqrt{n}$ 检查是否能整除 $n$,若能则不是质数,否则是质数。代码示例如下: ```cpp #include <iostream> #include <cmath> using namespace std; bool isPrime(int n) { if (n <= 1) return false; for (int i = 2; i <= sqrt(n); i++) { if (n % i == 0) return false; } return true; } int main() { int num; cout << "请输入一个数: "; cin >> num; if (isPrime(num)) { cout << num << " 是质数。" << endl; } else { cout << num << " 不是质数。" << endl; } return 0; } ``` - **质数在密码学中的应用**:在现代密码学中,质数起着至关重要的作用。例如,RSA 算法是一种广泛使用的公钥加密算法,它的安全性基于大整数分解的困难性,而大整数分解的关键就是将一个大的合数分解为质数的乘积。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值