第十一周项目3-5-调用函数输出1000内的素数

本文介绍了一个简单的C++程序,该程序能够输出1000以内的所有素数。通过定义一个判断素数的函数isprime()并结合for循环实现目标功能。
/*                            
*程序的版权和版本声明部分:                            
*Copyright(c)2013,烟台大学计算机学院学生                            
*All rights reserved.                            
*文件名称:                            
*作者:田成琳                            
*完成日期:2013年 11月6 日                            
*版本号:v1.0                            
*对任务及求解方法的描述部分:                            
*输入描述:     
*问题描述:调用函数输出1000内的素数
*程序输出:    
*问题分析:                            
*算法设计:                            
*/
我的程序:
#include<iostream>
using namespace std;
bool isprime(int);
int main()
{
	int i;
	cout<<"1000内的所有素数为:"<<endl;
	for(i=1;i<=10000;i++)
	if(isprime(i)!=0)
		cout<<i<<"\t";
	return 0;
}
bool isprime(int n)
{
	bool flag;
    int i;
	for(i=2;i<n/2;i++)
	{
		if(n%i==0)
		{
			flag=0;
		}
	}
	return flag;
}


运行结果:

心得体会:

### 验证哥德巴赫猜想的程序实现 为了验证10到30之间所有偶数的哥德巴赫猜想,需要设计一个素数判断函数 `int prime(int n)` 和主函数逻辑。以下是完整的代码实现及其说明。 --- #### 完整代码实现 ```c #include <stdio.h> #include <math.h> /// 素数判断函数 /// @param n 输入待检测的整数 /// @return 如果n是素数返回1,否则返回0 int prime(int n) { if (n <= 1) return 0; // 小于等于1的数不是素数[^4] int temp = (int)sqrt(n); // 使用平方根优化性能 for (int i = 2; i <= temp; i++) { if (n % i == 0) return 0; // 如果能被其他数整除,则不是素数 } return 1; // 否则是素数 } /// 主函数 int main() { printf("验证10到30之间所有偶数的哥德巴赫猜想:\n"); for (int num = 10; num <= 30; num += 2) { // 遍历10到30之间的所有偶数 int found = 0; // 标记是否找到了符合条件的两个素数 for (int a = 2; a <= num / 2; a++) { // 枚举第一个加数a if (prime(a) && prime(num - a)) { // 检查a和num-a是否都是素数 printf("%d = %d + %d\n", num, a, num - a); found = 1; // 找到了一组解 break; // 输出一组解后停止查找 } } if (!found) { // 如果找不到任何组合 printf("%d无法分解为两个素数之和。\n", num); } } return 0; } ``` --- #### 功能详解 1. **素数判断函数** 函数 `prime(int n)` 是用来判断给定整数 `n` 是否为素数的核心部分。通过从2到 $\sqrt{n}$ 的范围内逐一尝试能否整除 `n` 来决定其是否为素数[^1]。如果存在某个数能够整除 `n`,则它不是素数;反之则是素数。 2. **主函数逻辑** 主函数负责遍历区间 `[10, 30]` 内的所有偶数,并逐个验证它们是否可以表示成两个素数之和。具体过程如下: - 外层循环枚举每一个偶数 `num`。 - 内层循环枚举可能的第一个加数 `a`,并计算第二个加数 `b=num-a`。 - 用 `prime()` 函数分别检验 `a` 和 `b` 是否均为素数。如果是,则输出结果并标记已找到解;如果不是,则继续寻找下一组可能性[^2]。 3. **优化点** - 在内层循环中只让 `a` 运行至 `num/2` 即可,因为当 `a>num/2` 时必然有 `b<num/2`,这实际上是对称的情况无需重复检查[^3]。 - 使用平方根减少不必要的因数测试次数从而提高效率。 --- ### 测试运行结果 假设执行以上代码,预期输出应类似于下面这样: ``` 验证10到30之间所有偶数的哥德巴赫猜想: 10 = 3 + 7 12 = 5 + 7 14 = 3 + 11 16 = 3 + 13 18 = 5 + 13 20 = 3 + 17 22 = 3 + 19 24 = 5 + 19 26 = 3 + 23 28 = 5 + 23 30 = 7 + 23 ``` 每条记录展示了对应偶数如何拆分成两素数相加之形式。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值