【C语言】哥德巴赫猜想
2016-05-11 21:04
411 查看
问题:计算得到某一区间内所有符合哥德巴赫猜想的数。
背景:哥德巴赫猜想:任一大于2的偶数都可写成两个素数之和。
思路:
1.得到这个区间内的所有素数,放入一数组。
2.计算这些素数之间的和。
3.得解。
程序:
背景:哥德巴赫猜想:任一大于2的偶数都可写成两个素数之和。
思路:
1.得到这个区间内的所有素数,放入一数组。
2.计算这些素数之间的和。
3.得解。
程序:
#include "stdafx.h" #include <stdlib.h> #include <math.h> //判断是否为素数 bool isPrime(int number) { for (int i = 2; i <= sqrt(number); i++) { if (number % i == 0) return false; } return true; } void main() { int n = 0; scanf_s("%d", &n); //根据区间大小,创建一个数组存放这个区间内的所有素数 int *primeArray = (int*)malloc((n)*sizeof(int*)); //计算这个区间内的所有素数,是素数的元素即为素数的值,否则为0 for (int i = 2; i <= n; i = i++) { if (isPrime(i)) { primeArray[i - 2] = i; //printf("%d ", i); }else primeArray[i - 2] = 0; } //哥德巴赫猜想 for (int i = 0; i <= n; i = i + 2) {//第一层:区间 //冒泡排序原理相加:防止不会出现8 = 3 + 5,8 = 5 + 3 这种重复计算的情况 for (int j = 0; j < n; j++) {//第二层:被加数 if(primeArray[j] != 0) for (int k = j; k < n; k++) {//第三层:加数 if (primeArray[k] != 0) if ((primeArray[j] + primeArray[k]) == i) { printf("%d=%d+%d\n", i, primeArray[j], primeArray[k]); break; } } } 4000 printf("\n"); } system("pause"); }
相关文章推荐
- C++11 之 override 关键字
- C++ Primer 中文版 5th Edition 练习15.8和练习15.9的解答
- C++ main 函数
- HDU 1846-Brave Game(巴什博弈-SG函数)
- 链栈的C语言实现
- C++作业5
- 【C++ STL】三十分钟掌握STL
- C++第五次作业
- C语言深度剖析——读书笔记
- C语言深度解剖学习笔记
- C++第5次实验-数组分离
- C语言深度解剖读书笔记
- C++ 普通内联函数 及内联函数与宏的区别
- nyoj20 吝啬的国度
- C语言深度解剖读书笔记(3.预编译处理)
- C语言深度解剖读书笔记(2.字符的技巧)
- C语言深度解剖读书笔记(1.关键字的秘密)
- c++ 11(七)
- 第五次C++作业
- C/C++ uchar的一个有趣用法