C/C++程序训练6---歌德巴赫猜想的证明

问题:验证“每个不小于6的偶数都是两个素数之和”,输入一个不小于6的偶数n,找出两个素数,使它们的和为n。

使用语言:C.

输入:输入一个不小于6的偶数n。

输出:找出两个素数,使它们的和为n。只需要输出其中第一个素数最小的一组数据即可。

例:

输入 80

输出 80=7+73

#include <stdio.h>
int f(int m)
{
    int i;
    for(i=2;i<m;i++)//从2开始循环,以保证第一个素数是符合条件的最小素数。
    {
        if(m%i==0)
            break;
    }
    if(i==m)//当为素数时,必有i=m,这时用if直接设置返回值。
    {
        return -1;
    }
    else
    {
        return 1;
    }
}//定义一个判断“m”是不是素数的函数。
    int main()
{
    int n;
    int i=3;
    scanf("%d",&n);
    for ( i=3;i<n;i++)
    {
        if(f(i)==-1&&i%2==1&&f(n-i)==-1&&(n-i)%2==1)
        {
            printf("%d=%d+%d\n",n,i,n-i);
            break;
        }
    }
}

原文地址:https://www.cnblogs.com/ciarian/p/11930074.html

时间: 2024-11-02 09:17:24

C/C++程序训练6---歌德巴赫猜想的证明的相关文章

歌德巴赫猜想的证明

输入代码: /* *Copyright (c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:sum123.cpp *作 者:林海云 *完成日期:2014年12月30日 *版 本 号:v2.0 * *问题描述:写一个函数gotbaha, 验证"每个不小于6的偶数都是两个奇素数之和",输入一个不小于6的偶数n,找出两个素数,使它们的和为n. *程序输入: 一个不小于6的偶数n *程序输出: 符合要求的两个素数 */ #include<

Summation of Four Primes(歌德巴赫猜想)

Summation of Four Primes 题目链接:click here~ 题目要求: 给出一个整数要你将其拆成由四个素数组成的数.如果,不能拆则输出"Impossible." 思路解析: 根据题目给出的两个猜想,可以得到.如果,一个数是奇数的话则其一定可以拆成一个奇数+一个偶数的形式,而一个数是偶数的话可拆的就有两种奇数+奇数/偶数+偶数.而Waring的猜想是一个奇数可以拆成3个素数,所以显然题目给出的一个整数是奇数的时候我们就不能保留奇数拆偶数了.我们应该一开始就把奇数拆

如何用OpenCV自带的adaboost程序训练并检测目标

http://www.cnblogs.com/easymind223/archive/2012/07/03/2574826.html OpenCV自带的adaboost程序能够根据用户输入的正样本集与负样本集训练分类器,常用于人脸检测,行人检测等.它的默认特征采用了Haar,不支持其它特征. Adaboost的原理简述:(原文) 每个Haar特征对应看一个弱分类器,但并不是任伺一个Haar特征都能较好的描述人脸灰度分布的某一特点,如何从大量的Haar特征中挑选出最优的Haar特征并制作成分类器用

利用opencv源代码和vs编程序训练分类器haartraining.cpp

如需转载请注明本博网址:http://blog.csdn.net/ding977921830/article/details/47733363. 一  训练框架 训练人脸检測分类器须要三个步骤: (1) 准备正负样本集,分别放到两个目录里. 我使用的是麻省理工的那个人脸库.大家能够网上搜一下. (2)把正样本集生成正样本描写叙述文件(*.vec),把负样本集生成负样本集合文件.详细怎么操作请參考我博客中的另外两篇文章,各自是http://blog.csdn.net/ding977921830/a

歌德巴赫猜想

/* 2000以内的不小于4的正偶数都能分解成两个素数之和(验证这个猜想的正确性) */ #include <stdio.h> #include <stdlib.h> #include<math.h> int prime(int m); /* run this program using the console pauser or add your own getch, system("pause") or input loop */ int mai

使用C程序验证歌德巴赫猜想

就是一个足够大的偶数可以写成两个素数的和 1 #include<stdio.h> 2 #include<math.h> 3 4 int main(void) 5 { 6 int i,j; 7 int num=30284; //任意大于6的偶数 8 int p,q; 9 int flagp,flagq; 10 11 p=1; 12 do 13 { 14 p=p+1; 15 q=num-p; 16 flagp=1; 17 flagq=1; 18 19 for(i=2;i<sqrt

hihocoder offer收割编程练习赛12 A 歌德巴赫猜想

思路: 枚举. 实现: 1 #include <iostream> 2 #include <cstdio> 3 #include <algorithm> 4 using namespace std; 5 6 const int MAX_N = 1000005; 7 8 int prime[MAX_N]; 9 bool is_prime[MAX_N + 1]; 10 11 int init(int n) 12 { 13 int p = 0; 14 for (int i =

[Offer收割]编程练习赛12 题目1 : 歌德巴赫猜想

时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 哥德巴赫猜想认为"每一个大于2的偶数,都能表示成两个质数之和". 给定一个大于2的偶数N,你能找到两个质数P和Q满足P<=Q并且P+Q=N吗? 输入 一个偶数N(4 <= N <= 1000000) 输出 输出P和Q.如果有多组解,输出P最小的一组. 样例输入 10 样例输出 3 7 思路 判断和为N两个数是否为素数 代码 1 import java.util.Scanner; 2 3 pu

OJ期末刷题 Problem I: C/C++经典程序训练3---模拟计算器

Description 简单计算器模拟:输入两个整数和一个运算符,输出运算结果: Input 第一行输入两个整数: 第二行输入一个运算符(+.-.*./); Output 输出对两个数运算后的结果: Sample Input 30 50 * Sample Output 1500 代码: #include <iostream> using namespace std; int main() { int a,b; double c; char d; cin>>a>>b; c