【离散数学】偏序关系中盖住关系的求取及格论中有补格的判定(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;
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

财务风险管理:背后真相及应对策略

市场经济蓬勃发展&#xff0c;机遇与风险并存也是市场经济的一项重要特征。而财务状况的好坏影响着一个企业的发展前景&#xff0c;作为市场经济的必然产物&#xff0c;财务风险贯穿于企业的一切生产经营活动中&#xff0c;无法预知也不以人的意志为转移。 一、企业财务风险的特…

unordered_set(无序容器)

特点 它可以存储不重复的元素集合。容器的特点是内部元素没有特定的顺序&#xff0c;因此查找、插入和删除操作的平均时间复杂度是O(1)。unordered_set是基于哈希表实现的&#xff0c;所以在使用时需要提供一个哈希函数和相等函数。 成员函数 查找&#xff08;只能查找元素是否…

最长数字子串-第12届蓝桥杯国赛Python真题解析

[导读]&#xff1a;超平老师的Scratch蓝桥杯真题解读系列在推出之后&#xff0c;受到了广大老师和家长的好评&#xff0c;非常感谢各位的认可和厚爱。作为回馈&#xff0c;超平老师计划推出《Python蓝桥杯真题解析100讲》&#xff0c;这是解读系列的第62讲。 最长数字子串&…

软件验收测试包括哪些类型

在软件开发过程中&#xff0c;验收测试是一个至关重要的环节&#xff0c;它确保了软件的质量、功能性和用户体验符合预期。验收测试主要关注于软件是否满足用户需求和业务目标&#xff0c;从而确保软件能够顺利交付并投入使用。本文将介绍软件验收测试的主要类型及其关键要素。…

display:flex align-items:center无效的不一样的解决思路

写H5的时候&#xff0c;希望两个元素在div中垂直居中&#xff0c;但是设置align-items:center无效&#xff0c;最终排查原因是引入三方css影响了align-items:center。 具体分析如下&#xff0c;想让搜索图标和input在div里水平居中&#xff1a; 布局如下&#xff1a; <div…

JAVA实验项目(一):JAVA面向对象特征性实验

Tips&#xff1a;"分享是快乐的源泉&#x1f4a7;&#xff0c;在我的博客里&#xff0c;不仅有知识的海洋&#x1f30a;&#xff0c;还有满满的正能量加持&#x1f4aa;&#xff0c;快来和我一起分享这份快乐吧&#x1f60a;&#xff01; 喜欢我的博客的话&#xff0c;记得…

月入8.5k,计算机应届生转行网优,就业难,不妨另辟蹊径!

随着2024年毕业生人数的预计达到惊人的1179万&#xff0c;就业市场的竞争愈发激烈。作为即将踏入社会的毕业生&#xff0c;如何做好准备&#xff0c;减轻自己的就业压力&#xff0c;成为了摆在我们面前的一大难题。 今天主人公是一位刚毕业的22岁大学生小L&#xff0c;河南郑州…

docker 部署 prometheus + Grafana +

# prometheus安装 # 1.拉镜像 docker pull prom/prometheus:v2.43.0 # 2.创建配置文件 mkdir /opt/prometheus/data cd /opt/prometheus/ vi prometheus.yml # 3.使用root用户启动 docker run --name prometheus -d -p 9090:9090 -v /opt/prometheus/prometheus.yml:/etc/pro…

数据结构与算法-排序算法2-选择排序

目录 1.选择排序&#xff1a; 1.介绍&#xff1a; 2.动态图解 3.举例 4.小结选择排序规则 5.选择排序代码 6.运行时间 代码&#xff1a; 运行结果&#xff1a; 1.排序算法简介 排序也称为排序算法。排序是将一组数据依据指定的顺序进行排列的过程。 2.常见的排序算法…

Django图书馆综合项目-学习(2)

接下来我们来实现一下图书管理系统的一些相关功能 1.在书籍的book_index.html中有一个"查看所有书毂"的超链接按钮&#xff0c;点击进入书籍列表book_list.html页面. 这边我们使用之前创建的命名空间去创建超连接 这里的book 是在根路由创建的namespacelist是在bo…

图搜索算法-最短路径算法-戴克斯特拉算法

相关文章&#xff1a; 数据结构–图的概念 图搜索算法 - 深度优先搜索法&#xff08;DFS&#xff09; 图搜索算法 - 广度优先搜索法&#xff08;BFS&#xff09; 图搜索算法 - 拓扑排序 最短路径算法 自从有了导航&#xff0c;人们再也不怕去陌生地方&#xff0c;说走就走的旅…

mysql查询优化索引篇

其实在写这篇文章之前,也对查询优化做过一些设置,但这次则更为具体一点,之前做的无非就是增加查询字段的索引,让select里和where里的内容全部都包含在索引内(覆盖索引不走回表的基本概念),但这次这么做的时候发现了一些问题,这也是我接下来要提到的,而且之前使用的是sqlserver的…

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

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

苹果M4芯片:大模型本地运算的转折点

在人工智能和机器学习领域&#xff0c;大模型的兴起对硬件提出了前所未有的挑战。苹果公司最近推出的M4芯片&#xff0c;被视为其在这场竞赛中的“第一式”。本文将探讨M4芯片的特点&#xff0c;并与其他芯片进行比较。 M4芯片的亮点 Neural Engine算力&#xff1a;M4芯片的…

OpenStack虚拟机管理实例

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 目录 一、OpenStack计算服务 1、什么是Nova 2、Nova所用的虚拟技术 3、Nova的系统架构 4、虚拟机实例化流程 一、示例 1、验证Nova服务 2、试…

柔性数组+结构体类型转换

柔性数组&#xff1a;在结构体中声明的时候仅作为占位符&#xff0c;好处是地址是连续的 强制类型转换&#xff1a;可用于通信双方进行信息交流 #include <iostream> #include <string.h>struct DataWater {int count;float size;char buf[0]; }; // dbuf相当于是…

传输文件协议FTP与LFTP

目录 一.简介 二. FTP基础 主动模式&#xff08;Active Mode&#xff09;&#xff1a; 被动模式&#xff08;Passive Mode&#xff09;&#xff1a; 三. Vsftp 服务器简介 四. Vsftpd配置 1. 安装vsftpd&#xff08;ftp服务端&#xff09; 2.编辑配置文件 &#xff08;…

视频汇聚管理/安防监控系统EasyCVR如何开启和调用验证码登录接口?

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。视频汇聚融合管理平台EasyCVR既具备传统安防视…

【补充】图神经网络前传——Node2vec

Node2Vec【图神经网络论文精读】_哔哩哔哩_bilibili 解决的问题&#xff1a;图嵌入 把每一个节点编码成一个d维的低维、稠密&#xff08;不是one-hot&#xff09;、连续&#xff08;不是离散的&#xff0c;是实数->有助于保存更多的信息&#xff09;向量&#xff0c;并且&a…

安装Tomcat

下载 Tomcat 软件包 前往 Apache Tomcat 官网:Apache Tomcat - Apache Tomcat 10 Software Downloads在网站上找到最新版本的 Tomcat&#xff0c;选择下载对应的压缩包&#xff08;通常是 .zip 或 .tar.gz 格式&#xff09;。下载完成后&#xff0c;解压缩到您选择的目录。 配…