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

news2025/1/17 13:54:39

实验要求

实验要求
输出样例

求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.coloradmin.cn/o/1674678.html

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

相关文章

如何创建和运营新版Facebook粉丝专页

在众多平台中&#xff0c;Facebook粉丝专页无疑是连接全球消费者、扩展品牌影响力的重要工具。如果你是初次接触Facebook粉丝专页&#xff0c;可能会感到有些迷茫——毕竟&#xff0c;只是听说过它的好处&#xff0c;却不知道如何开始。 Facebook粉丝专页不仅是一个分享产品信…

ICode国际青少年编程竞赛- Python-5级训练场-函数练习2

ICode国际青少年编程竞赛- Python-5级训练场-函数练习2 1、 def get_item(a):Spaceship.step(1)Dev.step(a)Dev.turnLeft()Dev.step(1)Spaceship.step(1)Dev.turnRight()Dev.step(-a)Spaceship.step(1) get_item(3) get_item(2) get_item(3) get_item(1) get_item(5)2、 de…

【4】STM32·FreeRTOS·中断管理

目录 一、什么是中断 二、中断优先级分组设置 2.1、中断优先级基本概念 2.2、中断优先级分组 2.3、FreeRTOS中断特点 三、中断相关寄存器 3.1、系统中断优先级配置寄存器 3.2、PendSV和Systick中断优先级的配置 3.3、中断屏蔽寄存器 四、FreeRTOS中断管理实验 一、什…

618购物攻略:哪些好物值得你入手?精选必买数码产品推荐!

随着618大促的脚步渐近&#xff0c;购物的热情已然在大家心中熊熊燃烧&#xff0c;不少人已跃跃欲试&#xff0c;准备在这场购物盛宴中大放异彩。然而&#xff0c;面对琳琅满目的商品&#xff0c;你是否也感到有些无从下手&#xff0c;犹豫该把哪些好物收入囊中&#xff1f;别急…

Python 开发 框架安全:SSTI 模板注入漏洞测试.

什么是 SSTI 模板注入 SSTI (Server-Side Template Injection) 是一种Web应用程序安全漏洞&#xff0c;它发生在应用程序使用模板引擎渲染用户输入时。当应用程序将用户输入直接插入到模板中而不进行充分的过滤和验证时&#xff0c;就可能导致SSTI漏洞。攻击者可以利用这个漏洞…

Threejs 学习笔记 | 灯光与阴影

文章目录 Threejs 学习笔记 | 灯光与阴影如何让灯光照射在物体上有阴影LightShadow - 阴影类的基类平行光的shadow计算投影属性 - DirectionalLightShadow类平行光的投射相机 聚光灯的shadow计算投影属性- SpotLightShadow类聚光灯的投射相机 平行光 DirectionalLight聚光灯 Sp…

高校普法|基于SSM+vue的高校普法系统的设计与实现(源码+数据库+文档)

高校普法系统 目录 基于SSM&#xff0b;vue的高校普法系统的设计与实现 一、前言 二、系统设计 三、系统功能设计 1系统功能模块 2管理员功能模块 3律师功能模块 4学生功能模块 四、数据库设计 五、核心代码 六、论文参考 七、最新计算机毕设选题推荐 八、源码获…

Linux进程控制——Linux进程等待

前言&#xff1a;接着前面进程终止&#xff0c;话不多说我们进入Linux进程等待的学习&#xff0c;如果你还不了解进程终止建议先了解&#xff1a; Linux进程终止 本篇主要内容&#xff1a; 什么是进程等待 为什么要进行进程等待 如何进程等待 进程等待 1. 进程等待的概念2. 进…

“等保测评实施策略:保障企业信息安全合规“

等保测评&#xff0c;即网络安全等级保护测评&#xff0c;是企业保障信息安全合规的重要实施策略。以下是企业实施等保测评的一些关键策略&#xff1a; 理解等保测评的重要性&#xff1a; 等保测评有助于企业识别和评价信息系统的安全性能&#xff0c;提供改进建议&#xff0c;…

user32.dll怎么修复?几种修复user32.dll丢失的详细步骤

user32.dll怎么修复&#xff1f;几种修复user32.dll丢失的详细步骤user32.dll是Windows操作系统中的一个核心动态链接库文件&#xff0c;它主要负责处理图形用户界面&#xff08;GUI&#xff09;相关的功能。这个文件是Windows API&#xff08;应用程序编程接口&#xff09;的一…

css超出部分省略(单行、多行,多种方法实现)

HTML <p class"text">这是一行测试数据,这是一行测试数据,这是二行测试数据,这是一行测试数据,这是三行测试数据,这是四行测试数据</p>1.单行 .text{width: 200px;border: 1px solid #000000;white-space: nowrap; /* 控制元素不换行 */overflow: hi…

骨传导耳机哪个品牌值得入手?盘点5款高人气热门机型推荐!

随着人们对健康生活方式的追求和户外运动的普及&#xff0c;骨传导耳机的需求也日益增长。然而&#xff0c;随着骨传导耳机的热度增加&#xff0c;市场上也开始出现一些低质量的骨传导耳机产品&#xff0c;这些劣质耳机在音质、佩戴舒适度或安全性上存在各种不足&#xff0c;甚…

Matlab如何批量导出多张高质量论文插图?科研效率UpUp第9期

上一期文章中&#xff0c;分享了Matlab导出高质量论文插图的方法&#xff08;Matlab如何导出高质量论文插图&#xff1f;科研效率UpUp第8期&#xff09;。 进一步&#xff0c;假如我们想要批量导出多张高质量无变形论文插图&#xff0c;该如何操作呢&#xff1f; ​也很简单&…

【MySQL01】【 Explain 命令详解】

文章目录 一、前言二、Explain 概览三、Explain 详解1. id2. select_type3. table4. type5. possible_keys6. key7. key_len8. ref9. rows10. filtered11. extra 列 四、补充1. EXPLAIN 扩展1.1 Extend EXPLAIN1.2 JSON 格式的执行计划 2. Intersection、Union、Sort-Union 索引…

添砖Java之路(其八)——继承,final关键字

继承&#xff1a; 意义&#xff1a;让类于类之间产生父类于子类的关系&#xff0c;子类可以直接使用父类中的非私有成员(包括方法与成员变量) 。 extends关键字就是定义声明父类。 格式&#xff1a;public class 子类 extends 父类。 对于基础的我就不赘述了&#xff0c;我…

【接口测试_03课_-接口自动化思维梳理及Requests库应用】

一、通过代码&#xff0c;实现Jmeter 1、项目要放在虚拟环境里面&#xff0c;解释器要使用虚拟环境的 上面是虚拟环境&#xff0c;下面是系统环境。2选一 venv目录 查看当前虚拟环境已存在的依赖包 2、安装Requests依赖包 1&#xff09;安装命令 pip install requests 如果…

python输出希腊字母

有时候在绘制一些函数图像时&#xff0c;需要坐标轴和图例显示希腊字母 plt.xlabel(r’ ϵ \epsilon ϵ’)

AI绘画Stable Diffusion 模型辅助神器之 Lora 提示词助手

大家好&#xff0c;我是向阳 小伙伴们也知道&#xff0c;大多数的 Lora 模型都是有触发词的&#xff0c;而且每个模型的触发词都不一样。 模型少的时候还行&#xff0c;模型多起来了&#xff0c;还得一个一个去翻以前的笔记&#xff0c;真的挺麻烦。要是漏了没记&#xff0c;…

GPT-4o正式发布;零一万物发布千亿参数模型;英国推出AI评估平台

OpenAI 正式发布 GPT-4o 今天凌晨&#xff0c;OpenAI 正式发布 GPT-4o&#xff0c;其中的「o」代表「omni」&#xff08;即全面、全能的意思&#xff09;&#xff0c;这个模型同时具备文本、图片、视频和语音方面的能力&#xff0c;甚至就是 GPT-5 的一个未完成版。 并且&…

emp.dll文件丢失荒野大镖客,怎么快速修复emp.dll

缺失或损坏的 DLL 文件是会导致系统或软件故障的&#xff0c;DLL&#xff08;动态链接库&#xff09;文件是 Windows 操作系统中至关重要的一部分&#xff0c;它们允许多个程序共享代码和资源&#xff0c;从而减少内存占用和增强系统性能。然而&#xff0c;当EMP.dll文件丢失或…