用C语言来验证哥德巴赫猜想(定义的是int型)

哥德巴赫猜想:

如果任意一个大于6的偶数都可以写成两个素数之和。就将其称为符合哥德巴赫猜想。

#include<stdio.h>
#include<math.h>

	/// <summary>
        /// 判断一个数是否是素数
        /// </summary>
        /// <param name="intNum">要判断的数</param>
        /// <returns>如果是,返回true,否则,返回false</returns>
        static bool IsPrimeNumber(int intNum)
        {
            bool blFlag = true;							//标识是否是素数
            if (intNum == 1 || intNum == 2)					//判断输入的数字是否是1或者2
                blFlag = true;							//为bool类型变量赋值
            else
            {
                int sqr =(int)(sqrt((double)intNum));	//对要判断的数字进行开方运算
                for (int i = sqr; i >= 2; i--)					//从开方后的数进行循环
                {
                    if (intNum % i == 0)					//对要判断的数字和指定数字进行求余运算
                    {
                        blFlag = false;					//如果余数为0,说明不是素数
                    }
                }
            }
            return blFlag;								//返回bool型变量
        }

/// <summary>
/// 判断一个数是否符合哥德巴赫猜想
/// </summary>
/// <param name="intNum">要判断的数</param>
/// <returns>如果符合,返回true,否则,返回false</returns>
static bool ISGDBHArith(int intNum)
{
    bool blFlag = false;							//标识是否符合哥德巴赫猜想
    if (intNum % 2 == 0 && intNum > 6)				//对要判断的数字进行判断
    {
        for (int i = 1; i <= intNum / 2; i++)
        {
            bool bl1 = IsPrimeNumber(i);			//判断i是否为素数
            bool bl2 = IsPrimeNumber(intNum - i);		//判断intNum-i是否为素数
            if (bl1 & bl2)
            {
                //输出等式
				printf("%d=%d+%d\n",intNum, i, intNum - i);
                blFlag = true;
				//break;
					//符合哥德巴赫猜想
            }
        }
    }
    return blFlag;								//返回bool型变量
}

void main()
{
	int a=0;
	printf("输入一个大于6的偶数:\n");
	scanf_s("%d",&a,10);
	bool blFlag = ISGDBHArith(a);				//判断是否符合哥德巴赫猜想
    if (blFlag)
	{
		printf("%d能写成两个素数的和,所以其符合哥德巴赫猜想。",a);
	}
	getchar();
	getchar();
}

用C语言来验证哥德巴赫猜想(定义的是int型)

时间: 2024-10-08 22:59:21

用C语言来验证哥德巴赫猜想(定义的是int型)的相关文章

【算法】验证哥德巴赫猜想

问题来源 Timus Online Judge 网站上有这么一道题目:1356. Something Easier.这道题目的输入是一组  2 到 109 之间整数,对于每个输入的整数,要求用最少个数的素数的和来表示.这道题目的时间限制是 1 秒. 问题解答 我们知道著名的哥德巴赫猜想是: 任何一个充分大的偶数都可以表示为两个素数之和 于是我们有以下的 C 语言程序(1356.c): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

循环-04. 验证“哥德巴赫猜想”

循环-04. 验证“哥德巴赫猜想”(20) 时间限制 400 ms 内存限制 65536 kB 代码长度限制 8000 B 判题程序 Standard 作者 徐镜春(浙江大学) 数学领域著名的“哥德巴赫猜想”的大致意思是:任何一个大于2的偶数总能表示为两个素数之和.比如:24=5+19,其中5和19都是素数.本实验的任务是设计一个程序,验证20亿以内的偶数都可以分解成两个素数之和. 输入格式: 输入在一行中给出一个(2, 2 000 000 000]范围内的偶数N. 输出格式: 在一行中按照格式

验证哥德巴赫猜想,每个大于等于4的偶数都可以表示成2个素数之和

验证哥德巴赫猜想,每个大于等于4的偶数都可以表示成2个素数之和. 1 #define _CRT_SECURE_NO_WARNINGS 2 3 #include<stdio.h> 4 #include<stdlib.h> 5 6 int isou(int num)//1代表偶数,0代表奇数 7 { 8 if (num % 2 == 0) 9 { 10 return 1; 11 } 12 else 13 { 14 return 0; 15 } 16 } 17 18 int sushu(

循环-04. 验证“哥德巴赫猜想”(20)

1 #include<iostream> 2 #include<cmath> 3 using namespace std; 4 bool isPrime(long n){ 5 int i; 6 for(i=2;i<=sqrt(n);++i) 7 if(n%i==0) 8 break; 9 if(n>1&&i>sqrt(n)) 10 return true; 11 else 12 return false; 13 } 14 int main(){ 1

40.验证哥德巴赫猜想:一个大于2的偶数总可以分解成两个素数的和

//1.输入一个偶数.判断是否为偶数 //2.若是,求出小于其的所有素数 //3.将它们求和 //4.验证是否满足哥德巴赫猜想 #include<iostream> #include<cmath> using namespace std; int Sushu(int); int main() { int n,k,q; int a[1000]; begin: cout<<"please input an even number(偶数):"<<

c语言验证哥德巴赫猜想(从4开始 一个偶数由两个质数之和)

1 #include <stdio.h> 2 #include <stdlib.h> 3 #include <math.h> 4 5 int isit(int num) 6 { 7 int i; 8 int flag = 1;//表述为素数 9 if(num==2) 10 { 11 return 1; 12 }else if(num==3) 13 { 14 return 1; 15 }else if(num<=1) 16 { 17 return 0; 18 }el

Python验证哥德巴赫猜想

今天看到百度知道有人问如何验证1000以内的数符合哥德巴赫猜想,就写了一个 感觉超过10000时有点慢啊,和java比起来效率差了点,希望高手能给优化下 #!/usr/bin/env python __author__ = '淮南霏霏' """ 脚本编写环境python 3.4.2 哥德巴赫猜想 简单验证 """ import math class Goldbach: """ 哥德巴赫猜想:任一大于2的偶数都可写成两

编程验证哥德巴赫猜想

1.什么是哥德巴赫猜想 在1742年给欧拉的信中哥德巴赫提出了以下猜想:任一大于2的整数都可写成三个质数之和.因现今数学界已经不使用"1也是素数"这个约定,原初猜想的现代陈述为:任一大于5的整数都可写成三个质数之和.欧拉在回信中也提出另一等价版本,即任一大于2的偶数都可写成两个质数之和.今日常见的猜想陈述为欧拉的版本.把命题"任一充分大的偶数都可以表示成为一个素因子个数不超过a个的数与另一个素因子不超过b个的数之和"记作"a+b".1966年陈景

OJ刷题之《验证哥德巴赫猜想》

题目描述 写一个函数gotbaha, 验证"每个不小于6的偶数都是两个奇素数之和",输入一个不小于6的偶数n,找出两个素数,使它们的和为n. 输入 输入一个不小于6的偶数n 输出 找出两个为素数,使它们的和为n. 样例输入 80 样例输出 80=7+73 提示 主函数已给定如下,提交时不需要包含下述主函数 /*  C代码  */ int main() { int n; int gotbaha(int); int prime(int); scanf("%d",&