程序基本算法习题解析 验证任意一个大于5的奇数可以表示为3个素数之和

题目:

验证任意一个大于5的奇数可以表示为3个素数之和。

附上代码:

// Chapter1_9.cpp : Defines the entry point for the application.
// 验证任意一个大于5的奇数可以表示为3个素数之和

#include "stdafx.h"
#include<iostream>
#include<math.h>
using namespace std;
//判断是否为素数(输入大于2)
int isPrime(int x)
{
	int i=2,bound = int(sqrt(float(x)));//只需判断到平方根即可
	while(i<=bound)
	{
		if(x%i == 0)
			return 0;  //不为素数,返回0
		i++;
	}
	return 1;  //为素数,返回1
}
int main()
{
	int odd,x,y,z; //odd为用户输入数据,x,y,z分别为三个数
	cout << "input an odd bigger than 5: ";
	cin >> odd;
	for(x=3;x<odd;x++)
	{
		for(y=3;y<odd;y++)
		{
			for(z=3;z<odd;z++)
			{
				//当x,y,z均为素数且其和等于用户输入的数时
				if(isPrime(x) && isPrime(y) && isPrime(z) && (odd == x+y+z))
					cout << odd << " = " << x << " + " << y << " + " << z << endl;
			}
		}
	}
	system("pause");
	return 0;
}

运行结果如下:

猜你喜欢

转载自blog.csdn.net/elma_tww/article/details/85007062