素数之和

3.(20分) 输出 1-100之间所有素数,并求和。素数是只能被1和自身整除的整数,注意1不是素数。
每个素数的输出格式:"%d\n"
求和输出格式:“sum of prime numbers:%d\n”

#include<stdio.h>
int fun(int n);
int main()
{
	int i;
	int sum=0;
	for(i=1;i<=100;i++)
	if(fun(i))
	{
		printf("%d\n",i);
		sum+=i;
	}
	printf("sum of prime numbers:%d\n",sum);
	return 0;
}
int fun(int n)
{
	int i,sign=1;
	for(i=2;i<n/2;i++)
	{
		if(n%i==0)
		{
			sign=0;
			break;
		}
	 } 
	 return sign;
}

在C++中计算和谐素数之和通常涉及到以下几个步骤: 1. **理解概念**:和谐数是指那些除了1以外的所有正因数之和等于其自身的数。例如,6是一个和谐数,因为它的因数有1、2和3,它们的和正好是6。 2. **算法设计**:你可以采用筛法(如埃拉托斯特尼筛法)来生成所有的质数,然后遍历这些质数,检查每个是否是和谐数。对于每个质数p,你需要找出所有小于或等于p且能整除p的其他质数,并将它们相加。如果这个和恰好等于p,那么p就是和谐数。 3. **代码编写**: ```cpp #include <vector> using namespace std; bool isPrime(int n) { if (n <= 1) return false; for (int i = 2; i * i <= n; ++i) if (n % i == 0) return false; return true; } int harmonicSumOfPrimes(int n) { vector<bool> isComposite(n + 1, false); vector<int> primes; // 筛法找质数 for (int i = 2; i <= n; ++i) { if (!isComposite[i]) { primes.push_back(i); if (i * i <= n) { for (int j = i * i; j <= n; j += i) isComposite[j] = true; } } } int sum = 0; for (const auto& prime : primes) { int temp_sum = 0; for (int factor : primes) { if (factor > prime && prime % factor == 0) { temp_sum += factor; } } if (temp_sum == prime) { sum += prime; } } return sum; } int main() { int n = 100; // 要查找和谐数的范围 cout << "The sum of harmonious numbers up to " << n << " is: " << harmonicSumOfPrimes(n) << endl; return 0; } ``` 4. **运行程序**:编译并运行上述代码,它会输出指定范围内和谐数的和。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值