【離散數學】偏序關系中蓋住關系的求取及格論中有補格的判定(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.pswp.cn/web/12022.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/12022.shtml
英文地址,請注明出處:http://en.pswp.cn/web/12022.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++反向迭代器

C反向迭代器 反向迭代器是用正向迭代器適配實現的&#xff0c;本質是寫一個反向迭代器的類模板&#xff0c;給編譯器傳不同的容器的正向迭代器實例化&#xff0c;編譯器去實例化出各種類模板對應的反向迭代器。 #pragma once namespace my_reverse_iterator {template<cla…

代碼隨想錄算法訓練營第五十三天| 1143.最長公共子序列,1035.不相交的線,53. 最大子序和

目錄 題目鏈接&#xff1a;1143.最長公共子序列 思路 代碼 題目鏈接&#xff1a; 1035.不相交的線 思路 代碼 題目鏈接&#xff1a; 53. 最大子序和 思路 代碼 總結 題目鏈接&#xff1a;1143.最長公共子序列 思路 ①dp數組&#xff0c;dp[i][j]表示[0,i-1]的text1和…

軟件測試面試78問

&#x1f345; 視頻學習&#xff1a;文末有免費的配套視頻可觀看 &#x1f345; 點擊文末小卡片 &#xff0c;免費獲取軟件測試全套資料&#xff0c;資料在手&#xff0c;漲薪更快 1、問&#xff1a;你在測試中發現了一個bug&#xff0c;但是開發經理認為這不是一個bug&#xf…

關于使用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…

智能優化算法 | Matlab實現成長優化算法(Growth Optimizer,GO)(內含完整源碼)

智能優化算法 | Matlab實現成長優化算法(Growth Optimizer,GO)(內含完整源碼) 文章目錄 智能優化算法 | Matlab實現成長優化算法(Growth Optimizer,GO)(內含完整源碼)文章概述源碼設計文章概述 智能優化算法 | Matlab實現成長優化算法(Growth Optimizer,GO)(內含…

Java的類和對象(一)—— 初始類和對象,this關鍵字,構造方法

前言 從這篇文章開始&#xff0c;我們就進入到了JavaSE的核心部分。這篇文章是Java類和對象的第一篇&#xff0c;主要介紹類和對象的概念&#xff0c;this關鍵字以及構造方法~~ 什么是類&#xff1f;什么是對象&#xff1f; 學過C語言的老鐵們&#xff0c;可以類比struct自定義…

【哈希】Leetcode 383. 贖金信【簡單】

贖金信 給你兩個字符串&#xff1a;ransomNote 和 magazine &#xff0c;判斷 ransomNote 能不能由 magazine 里面的字符構成。 如果可以&#xff0c;返回 true &#xff1b;否則返回 false 。 magazine 中的每個字符只能在 ransomNote 中使用一次。 解題思路 可以使用哈希…

matlab進行濾波處理

在MATLAB中進行濾波處理&#xff0c;你可以使用內置的函數或自定義濾波器。以下是一些常見的方法&#xff1a; 1. 使用內置濾波器函數 MATLAB提供了多種內置濾波器函數&#xff0c;如filter&#xff0c;filtfilt&#xff0c;butter&#xff08;用于設計巴特沃斯濾波器&#x…

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;都渴望能夠實現跨…

nginx 代理java 請求報502

情況&#xff1a;nginx代理java 請求 后端返回正常&#xff0c;但是經過nginx 時報502 經過多次對比其他接口發現可能是返回的請求頭過大&#xff0c;導致nginx 報錯&#xff1a;如下 2024/05/13 02:57:12 [error] 88#88: *3755 upstream sent too big header while reading r…

創建存儲過程

一、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…

【算法刷題day52】Leetcode:300. 最長遞增子序列、674. 最長連續遞增序列、718. 最長重復子數組

文章目錄 Leetcode 300. 最長遞增子序列解題思路代碼總結 Leetcode 674. 最長連續遞增序列解題思路代碼總結 Leetcode 718. 最長重復子數組解題思路代碼總結 草稿圖網站 java的Deque Leetcode 300. 最長遞增子序列 題目&#xff1a;300. 最長遞增子序列 解析&#xff1a;代碼隨…

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…