首页 > 编程语言 >浙大版《C语言程序设计实验与习题指导(第4版)实验6-6 使用函数验证哥德巴赫猜想

浙大版《C语言程序设计实验与习题指导(第4版)实验6-6 使用函数验证哥德巴赫猜想

时间:2024-10-26 14:21:30浏览次数:8  
标签:prime 函数 int Goldbach C语言 素数 分解 实验 习题

本题要求实现一个判断素数的简单函数,并利用该函数验证哥德巴赫猜想:任何一个不小于6的偶数均可表示为两个奇素数之和。素数就是只能被1和自身整除的正整数。注意:1不是素数,2是素数。

函数接口给定如下

int prime( int p );
void Goldbach( int n );

其中函数prime当用户传入参数p为素数时返回1,否则返回0;函数Goldbach按照格式“n=p+q”输出n的素数分解,其中p≤q均为素数。又因为这样的分解不唯一(例如24可以分解为5+19,还可以分解为7+17),要求必须输出所有解中p最小的解。

答案如下

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


int prime(int p) {
    if (p <= 1) {
        return 0;
    }
    int i = 0;
    int sign = 1;
    for (i = 2; i <= sqrt(p); i++) {
        if (p % i == 0) {
            sign = 0;
            break;
        }
    }
    if (sign == 1) {
        return 1;
    }
    else return 0;
}
void Goldbach(int n) {
    int i = 0;
    int result = n;
    for (i = 2; i <= n / 2; i++){
        if (prime(i) && prime(n - i)) {
            if (i < result) {
                result = i;
            }

        }
    }
    printf("%d=%d+%d", n, result, n - result);

}

int main()
{
    int m, n, i, cnt;

    scanf("%d %d", &m, &n);
    if (prime(m) != 0) printf("%d is a prime number\n", m);
    if (m < 6) m = 6;
    if (m % 2) m++;
    cnt = 0;
    for (i = m; i <= n; i += 2) {
        Goldbach(i);
        cnt++;
        if (cnt % 5) printf(", ");
        else printf("\n");
    }

    return 0;
}

标签:prime,函数,int,Goldbach,C语言,素数,分解,实验,习题
From: https://blog.csdn.net/owardl/article/details/143234828

相关文章

  • 实验三
    实验任务1源代码1#include<stdio.h>23charscore_to_grade(intscore);45intmain(){6intscore;7chargrade;89while(scanf("%d",&score)!=EOF){10grade=score_to_grade(score);11printf......
  • 实验2 类和对象_基础编程1
    任务1:t.h#pragmaonce#include<string>//类T:声明classT{//对象属性、方法public:T(intx=0,inty=0);//普通构造函数T(constT&t);//复制构造函数T(T&&t);//移动构造函数~T();//析构函数voidadjus......
  • C语言数组与函数实践:构建基础版扫雷游戏
         使用C语言中的数组和函数来构建一个简单的扫雷游戏。通过这个项目,你可以练习如何在C语言中使用数组来存储和处理游戏数据,如何使用函数来组织代码并提高代码的可读性和可维护性。        在实现这个项目时,你可以按照以下步骤进行:1、定义游戏数组:使用二维数......
  • C语言:动态内存管理
    目录为什么要有动态内存管理mallocfreecallocrealloc为什么要有动态内存管理内存分为栈区、堆区、静态区,每个区存放的变量如下图:目前我们掌握的内存开辟方法有:创建结构体structs{inti;intc;};创建一些变量:intx;intu[10];charl;还有创建联合等…......
  • C语言实训:销售管理系统<仅供参考>
    问题描述:本代码比较完善,有菜单模块,拥有较高的可操控性和可观性。代码所包含的功能有很多:输入销售数据,计算每人每种产品销售额,按销售额对销售员排序,计算每种产品总销售额,显示销售报表......以下是全部代码:记得点赞加关注喔~#include<stdio.h>#include<stdlib.h>#defi......
  • 初始c语言2
    十五:指针内存是电脑上特别重要的储存器,计算机中程序的运行都是在内存中进行的。所以为了有效的使用内存,就把内存划分成一个个小单元,每个内存单元的大小是1个字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。内存单元编号就......
  • vscode怎么配置C语言环境
    #vscode怎么配置C语言环境在配置VisualStudioCode(VSCode)以支持C语言环境时,主要步骤包括安装C/C++扩展、配置编译器、设置调试环境。这些步骤确保了开发者可以在VSCode中高效地编写、编译和调试C语言代码。接下来,我们将详细讨论如何完成这些配置步骤。##一、安装C/C++扩展......
  • 实验2 类和对象_基础编程1
    1.实验任务1t.h源代码:1#pragmaonce2#include<string>34//类T:声明5classT{6public:7//对象属性、方法8T(intx=0,inty=0);//普通构造函数9T(constT&t);//复制构造函数10T(T&&t);......
  • 程序设计实验2
    任务1task1.cpp1#include"t.h"2#include<iostream>34usingstd::cout;5usingstd::endl;67voidtest();89intmain(){10test();11cout<<"\nmain:\n";12cout<<"Tobjects......
  • 第七章 课后习题
    <!DOCTYPEhtml><htmllang="zh"><head><metacharset="UTF-8"><title>翡翠阁</title> <styletype="text/css"> body{ font-family:'Arial',sans-serif; bac......