【离散数学】偏序关系中盖住关系的求取及格论中有补格的判定(c语言实现)

实验要求

实验要求
输出样例

求n的因子函数

我们将n的因子存入数组中,n的因子就是可以整除n的数,所以我们通过一个for循环来求。返回因子个数。

//求n的因子,返回因子个数
int factors(int arr[], int n)
{int j = 0;for (int i = 1; i <= n; i++){if (n % i == 0){arr[j++] = i;}}return j;
}

输出盖住关系

盖住关系就是指arr[i]整除arr[j],找不到arr[k]使得arr[i]整除arr[k],arr[k]整除arr[j]。
所以我们用3个循环来实现,
第一个循环我们找到arr[i],
第二个循环我们找到可以被arr[i]整除的arr[j],因为我们的数组是有序地(因为计算因子时有序存入的),所以开始条件是 =i+1,
第三个循环判断是否有arr[k],因为数组有序,开始条件为 =i + 1,结束条件是 <j。

//输出盖住关系
void envelop(int arr[],int len)
{printf("盖住关系为:");for (int i = 0; i < len; i++){for (int j = i + 1; j < len; j++) {if (arr[j] % arr[i] == 0){int flag = 1;for (int k = i + 1; k < j; k++){if (arr[k] % arr[i] == 0 && arr[j] % arr[k] == 0)flag = 0;}if (flag == 1){printf("<%d,%d>", arr[i], arr[j]);}}}}
}

输出是否为有补格

有补格就是每个元素都存在补元,arr[i]的补元就是指找得到arr[j],使得arr[i]和arr[j]最小公倍数是n,最大公约数是1。

求最小公倍数

//求最小公倍数
int leastCommonMultiple(int a, int b)
{int n = 1;while (n++){if (n % a == 0 && n % b == 0)return n;}
}

求最大公约数

辗转相除法

//求最大公约数
int greatestCommonDivisor(int a, int b)
{int temp = 0;if (a > b){temp = a;a = b;b = temp;}while (1){if (b % a == 0){return a;}temp = b % a;b = a;a = temp;}
}

输出有补格

用flag来标记是不是有补元
第一个循环来找arr[i]
第二个循环来找arr[j],将arr[i]排除,如果第二个循环走完没有补元直接返回了。

//输出是否是有补格
void complementedLattice(int arr[], int len,int n)
{for (int i = 0; i < len; i++){int flag = 0;for (int j = 0; j < len; j++){if(i == j){continue;}if (greatestCommonDivisor(arr[i], arr[j]) == 1 && leastCommonMultiple(arr[i], arr[j]) == n){flag = 1;break;}}if (flag == 0){printf("不是有补格,%d没有补元", arr[i]);return;}}printf("是有补格");
}

源码

# define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<string.h>
//求n的因子,返回因子个数
int factors(int arr[], int n)
{int j = 0;for (int i = 1; i <= n; i++){if (n % i == 0){arr[j++] = i;}}return j;
}
//输出盖住关系
void envelop(int arr[],int len)
{printf("盖住关系为:");for (int i = 0; i < len; i++){for (int j = i + 1; j < len; j++) {if (arr[j] % arr[i] == 0){int flag = 1;for (int k = i + 1; k < j; k++){if (arr[k] % arr[i] == 0 && arr[j] % arr[k] == 0)flag = 0;}if (flag == 1){printf("<%d,%d>", arr[i], arr[j]);}}}}
}
//求最小公倍数
int leastCommonMultiple(int a, int b)
{int n = 1;while (n++){if (n % a == 0 && n % b == 0)return n;}
}
//求最大公约数
int greatestCommonDivisor(int a, int b)
{int temp = 0;if (a > b){temp = a;a = b;b = temp;}while (1){if (b % a == 0){return a;}temp = b % a;b = a;a = temp;}
}
//输出是否是有补格
void complementedLattice(int arr[], int len,int n)
{for (int i = 0; i < len; i++){int flag = 0;for (int j = 0; j < len; j++){if(i == j){continue;}if (greatestCommonDivisor(arr[i], arr[j]) == 1 &&leastCommonMultiple(arr[i], arr[j]) == n){flag = 1;break;}}if (flag == 0){printf("不是有补格,%d没有补元", arr[i]);return;}}printf("是有补格");
}int main()
{int n = 0;printf("请输入一个不超过50的整数:\n");scanf("%d", &n);int arr[50] = { 0 };//用来储存正整数n的所有因子int len = factors(arr, n);//求n的因子,返回因子个数envelop(arr, len);//输出盖住关系complementedLattice(arr, len, n);return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/12022.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++反向迭代器

C反向迭代器 反向迭代器是用正向迭代器适配实现的&#xff0c;本质是写一个反向迭代器的类模板&#xff0c;给编译器传不同的容器的正向迭代器实例化&#xff0c;编译器去实例化出各种类模板对应的反向迭代器。 #pragma once namespace my_reverse_iterator {template<cla…

关于使用git拉取gitlab仓库的步骤(解决公钥问题和pytho版本和repo版本不对应的问题)

先获取权限&#xff0c;提交ssh-key 虚拟机连接 GitLab并提交代码_gitlab提交mr-CSDN博客 配置完成上诉步骤之后&#xff0c;执行下列指令进行拉去仓库的内容 sudo apt install repo export PATHpwd/.repo/repo:$PATH python3 "实际路径"/repo init -u ssh://gitxx…

Java的类和对象(一)—— 初始类和对象,this关键字,构造方法

前言 从这篇文章开始&#xff0c;我们就进入到了JavaSE的核心部分。这篇文章是Java类和对象的第一篇&#xff0c;主要介绍类和对象的概念&#xff0c;this关键字以及构造方法~~ 什么是类&#xff1f;什么是对象&#xff1f; 学过C语言的老铁们&#xff0c;可以类比struct自定义…

spark结课之tip2

spark常用方法总结&#xff1a; 一、从内部创建RDD (1).通过并行化集合&#xff08;Parallelized Collections&#xff09;&#xff1a; 可以使用SparkContext的parallelize方法将一个已有的集合转换为RDD。 基本语法&#xff1a; parallelize(collection, numSlicesNone)…

AI系列:大语言模型的RAG(检索增强生成)技术(下)-- 使用LlamaIndex

目录 前言什么是LlamaIndex?LlamaIndex代码设置embedding模型设置LLM模型索引查询机 验证使用感受参考资料 前言 继上一篇文章AI系列&#xff1a;大语言模型的RAG&#xff08;检索增强生成&#xff09;技术&#xff08;上&#xff09;&#xff0c;这篇文章主要以LlamaIndex为…

银行业数据运营场景下的数据埋点方案

1、引言 随着金融科技的快速发展&#xff0c;银行业的数据运营变得日益重要。数据埋点作为数据收集的重要手段&#xff0c;对于银行业务的精细化运营、风险管理和产品迭代等方面起着至关重要的作用。本方案将针对银行业数据运营场景&#xff0c;设计一套完整的数据埋点方案&am…

【生信技能树】GEO数据挖掘全流程

R包的安装&#xff0c;每次做分析的时候先运行这段代码把R包都安装好了&#xff0c;这段代码不需要任何改动&#xff0c;每次分析直接运行。 options("repos""https://mirrors.ustc.edu.cn/CRAN/") if(!require("BiocManager")) install.packag…

思源笔记如何结合群晖WebDav实现云同步数据

文章目录 1. 开启群晖WebDav 服务2. 本地局域网IP同步测试3. 群晖安装Cpolar4. 配置远程同步地址5. 笔记远程同步测试6. 固定公网地址7. 配置固定远程同步地址 在数字化时代&#xff0c;信息的同步与共享变得尤为重要。无论是个人用户还是企业团队&#xff0c;都渴望能够实现跨…

创建存储过程

一、DDL与DML CREATE TABLE student (id INT PRIMARY KEY AUTO_INCREMENT,createDate DATETIME NOT NULL,userName VARCHAR(255) NOT NULL,phone VARCHAR(20) NOT NULL,age INT NOT NULL,sex ENUM(男, 女) NOT NULL,introduce TEXT ); INSERT INTO student (createDate, userN…

透明加密软件推荐:哪款实用又高效?

透明加密软件是一种专门针对文件保密需求的计算机加密工具。 其核心在于“透明”二字&#xff0c;意味着整个加密过程对于使用者来说是无形且无感知的。 当用户进行文件的日常操作&#xff0c;如打开、编辑或保存时&#xff0c;透明加密软件会在后台自动进行加密和解密工作&a…

Keil编程不同驱动文件引用同一个常量的处理方法

基础不牢&#xff0c;地动山摇&#xff0c;最近单片机编程又遇到一个基础问题。 我在头文件中定义了一个常量同时给两个驱动文件使用&#xff0c;封装的时候编译没问题&#xff0c;但是在main函数中引用驱动函数的时候就出现了重定义的问题&#xff0c;如下如所示。 解决方法很…

Windows 11 下 kafka 的安装踩坑

安装 windows系统kafka小白入门篇——下载安装&#xff0c;环境配置&#xff0c;入门代码书写&#xff08;推荐&#xff09; kafka在windows下安装和使用入门教程 问题1 参考链接 运行kafka集成的zookeeper时&#xff0c;命令&#xff1a;bin\windows\zookeeper-server-star…

05. 【Java教程】第一个 Java 程序

本节我们将以Windows操作系统为例&#xff0c;编写并执行第一个Java程序。在这之前&#xff0c;请确保你的操作系统上已经安装了JDK 1. 编译程序 大家可能有个疑问&#xff0c;为什么需要编译程序呢&#xff1f;计算机不能直接执行我们编写的源代码吗&#xff1f; 这是由于计…

CPU利用率使用教程

本文主要参考&#xff1a; 一文让你学到 nmon最详尽的用法 Linux性能监控命令_nmon 安装与使用 如果你是在Ubuntu上安装nmon&#xff0c;使用&#xff1a; apt install nmon安装好后&#xff0c;直接运行 $:nmon #运行如果是后台抓数据&#xff1a; -f 参数: 生成文件,文件…

python 虚拟环境多种创建方式

【一】说明介绍 &#xff08;1&#xff09;什么是虚拟环境 在Python中&#xff0c;虚拟环境&#xff08;Virtual Environment&#xff09;是一个独立的、隔离的Python运行环境&#xff0c;它拥有自己的Python解释器、第三方库和应用程序。通过创建虚拟环境&#xff0c;可以确…

【刷题(2)】矩阵

一、矩阵问题基础 遍历&#xff1a; for i in range(len(matrix[0])): for j in range(len(matrix): while 倒序遍历&#xff1a; for i in range(right,left,-1) 临时存储&#xff1a;temp w,h:len(matrix[0])-1 len(matrix)-1 left,right,top,bottom:0 len(matrix[0])-1 0 l…

Cesium 3DTileset Style 原理简析

Cesium 3DTileset Style 原理简析 应用层会看到这样的使用。那么原理是什么, 为啥写 height, 除了这个还有啥? const tileset await Cesium.Cesium3DTileset.fromUrl("../../public/tileset/building/tileset.json"); tileset.style new Cesium.Cesium3DTileSty…

HarmonyOS应用模型Stage基本介绍

文章目录 <font colorcoral> HarmonyOS应用模型概况<font colorcoral> Stage模型基本概念<font colorcoral> Stage模型UIAbiliry的生命周期<font colorcoral> Stage模型的配置文件<font colorcoral> 写在后面的话<font colorcoral>Referen…

【八大排序算法】插入排序、希尔排序、选择排序、堆排序、冒泡排序、快速排序、归并排序、计数排序

文章目录 一、排序的相关概念二、排序类型三、排序算法实现插入排序1.直接插入排序2.希尔排序 选择排序3.简单选择排序4.堆排序 交换排序5.冒泡排序6.快速排序递归实现非递归实现 7.归并排序递归实现非递归实现 8.计数排序 四、总结 一、排序的相关概念 排序&#xff1a;根据数…