验证任意一个大于4并且小于500的偶数都可以拆分成两个素数之和
2013-07-03 15:50
483 查看
以下代码用于验证 大于 4 小于 500的一个偶数可以拆分成两个素数之和。
主函数验证:
#pragma once class CJudegeprime { public: CJudegeprime(void); ~CJudegeprime(void); private: bool isprime(int m); int getallprime100(int container[]); bool judgeisinarray(int number, int container[], int count, int start); bool decompose(int even); public: void makelist(); void display(); }; #include "StdAfx.h" #include "Judegeprime.h" #include "math.h" CJudegeprime::CJudegeprime(void) { } CJudegeprime::~CJudegeprime(void) { } bool CJudegeprime::isprime(int m) { int loopcount = (int)sqrt(long double(m)); for(int i=2; i<=loopcount; i++) { if (m % i == 0) { return false; } } return true; } int CJudegeprime::getallprime100(int container[]) { int outcome = 0; for(int i=2; i<500; i++) { if (isprime(i)) { container[outcome] = i; outcome++; } } return outcome; } void CJudegeprime::display() { int container[500]; int count = getallprime100(container); for(int i = 0; i<count; i++) { printf("index=%d prime=%d\n", i, container[i]); } } bool CJudegeprime::decompose(int even) { int container[500]; int count = getallprime100(container); for(int i=0; i<count; i++) { if (container[i] < even) { int temp = even - container[i]; if (judgeisinarray(temp, container, count, i)) { printf("%d = %d + %d\n", even, container[i] , temp); return true; } } else { break; } } return false; } bool CJudegeprime::judgeisinarray(int number, int container[], int count, int start) { for(int i=start; i<count; i++) { if (number == container[i]) return true; } return false; } void CJudegeprime::makelist() { for(int i=4; i<500; i+=2) { decompose(i); } }
主函数验证:
// prime.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include "Judegeprime.h" int _tmain(int argc, _TCHAR* argv[]) { CJudegeprime jp; //jp.display(); printf("*********************\n"); jp.makelist(); getchar(); return 0; }
相关文章推荐
- 哥德巴赫猜想: 任何一个大于2的偶数都可以拆分为两个素数的和
- 40.验证哥德巴赫猜想:一个大于2的偶数总可以分解成两个素数的和
- 编程验证哥德巴赫猜想:任意一个充分大的偶数,可以用两个素数之和表示。如: 4 = 2 + 2 6 = 3 + 3。 **输入格式要求:"%d" 提示信息:"Input a number:\n"
- 哥德巴赫猜想之一:是任何一个大于5的偶数都可以表示为两个素数之和(C语言)
- 验证歌德巴赫猜想:任何一个充分大的偶数都可以表示为两个素数之和。请输入一个偶数,将其表示成两个素数之和。
- 初步验证哥德巴赫猜想(即:任意一个大于4的偶数,可以分解成2个质数之和*10000以内)
- 哥德巴赫猜想-一个偶数可以表示为两个素数之和
- 从键盘输入一个正偶数,将该偶数拆分成两个素数之和
- 歌德巴赫猜想的C语言和Java语言版源程序(给出任何一个大于6的偶数写出两个素数之和)
- 所谓哥德巴赫猜想是说任何一个大于2的偶数都能表示为两个素数之和。
- 输入任意一个大于2的正整数n,输出所有小于等于n的素数
- 输入一个不小于6的偶数,它可以表示成二个奇素数的和
- 任何一个大于1的自然数n,总可以拆分成若干个小于n的自然数之和。
- F - Goldbach`s Conjecture 对一个大于2的偶数n,找有多少种方法使两个素数的和为n;保证素数a<=b; a+b==n; a,b都为素数。
- 判断一个偶数(大于4)是不是两个素数之和
- 谷歌面试题:输入是两个整数数组,他们任意两个数的和又可以组成一个数组,求这个和中前k个数怎么做?
- 一个偶数总能表示为两个素数的和.
- 【华为OJ】【079-查找组成一个偶数最接近的两个素数】
- 定义一个宏,比较两个数a、b的大小,不能使用大于、小于、if语句 以及 不用 第三个数,交换 a,b的值
- 使用API实现的一个增加系统桌面,并且可以任意切换的小程序.