南郵離散實驗三(JAVA)
內容:編寫程式實現整除關係這一偏序關係上所有蓋住關係的求取,並判定對應偏序集是否為格。
要求:對任意給定正整數,利用整除關係求所有由其因子構成的集合所構成的格,判斷其是否為有補格。
import java.util.Scanner;
public class Pianxu {
private static int n; //正整數n
private static int count = 0; //計數
private static int[] factors = new int[100]; //存放因子
private static int[][] matrixs = new int[100][100];
public static int gcd(int x, int y) {
int m = 1;
while (m != 0) {
m = x % y;
x = y;
y = m;
}
return x;
}
public static void factor(int n) {
for (int i = 1; i <= n/2; i++) {
if (n % i == 0) {
factors[count] = i;
count++;
System.out.print(i + ",");
}
}
// count++;
factors[count] = n;
System.out.println(n);
}
public static void cover() {
for (int i = 0; i <= count; i++) {
for (int j = 0; j <= count; j++) {
//滿足整除關係設為1
matrixs[i][j] = ((factors[j] % factors[i] == 0) ? 1 : 0);
}
}
for (int i = 0; i <= count; i++) {
for (int j = 0; j <= count; j++) {
for (int k = 0; k <= count; k++) {
matrixs[k][k] = 0; //去掉自反性
if (matrixs[i][j] == 1 && matrixs[j][k] == 1) {
matrixs[i][k] = 0;
}
}
}
}
System.out.print("蓋住關係{");
for (int i = 0; i <= count; i++) {
for (int k = 0; k <= count; k++) {
if (matrixs[i][k] == 1) {
System.out.print("<" + factors[i] + "," + factors[k] + ">");
}
}
}
System.out.println("}");
}
//判斷補格
public static void lattice() {
int gcd;
int lcm;
boolean flag;
for (int i = 1; i < count; i++) {
flag = false;
for (int j = 1; j < count; j++) {
if (i == j) {
continue;
}
gcd = gcd(factors[i], factors[j]); //最大公約數,即最大下界
lcm = factors[i] / gcd * factors[j]; //最小公倍數,即最小上界
if (gcd == factors[0] && lcm == factors[count]) {
//最大下界為1,最小上界為n
flag = true;
break;
}
}
if (!flag) {
System.out.println("不是有補格");
return;
}
System.out.println("是有補格");
return;
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("請輸入一個正整數");
n = sc.nextInt();
System.out.println();
factor(n);
cover();
lattice();
}
}
測試結果:
相關文章
- 南郵資料結構實驗1.1 順序表的操作資料結構
- 南郵資料結構實驗1.1:順序表的相關操作資料結構
- Java實現郵箱驗證碼功能Java
- 離散請求
- 實驗| Pyecharts實現散點圖Echarts
- 離散數學實踐作業,java輸出真值表(轉)Java
- 數字訊號模擬實驗——實驗一離散時間訊號與系統的時域分析
- 數字訊號處理實驗一(離散時間訊號的MATLAB實現)Matlab
- 離散傅立葉變換
- 【Java程式設計】Java上機實驗(三)Java程式設計
- OpenCV 離散傅立葉變換OpenCV
- 網路安全實驗三 PGP 實現郵件加密和簽名加密
- 離散漸進模型(轉載)模型
- 南郵本部宿舍上網IP設定方法
- 【離散優化】覆蓋問題優化
- 離散數學(數論基礎)
- 二維座標離散化模板
- PLM在離散製造業的實施管理應用研究
- 【JAVA程式設計】實驗三 函式與物件Java程式設計函式物件
- 離散傅立葉變換DFT的應用
- 如何可以開濟南加油費發票_濟南百度經驗
- Java 實現郵件的接收Java
- Java實現郵件推送功能Java
- Java 2實用教程(第三版)實驗指導與習題解答and實驗模版程式碼及答案 (三)Java
- 離散數學及其應用 (第2版)
- 連續特徵離散化和歸一化特徵
- hdu4325 樹狀陣列+離散化陣列
- Python 實現影像快速傅立葉變換和離散餘弦變換Python
- Java實現QQ郵件傳送郵件工具類Java
- Laravel 專案實現郵箱驗證功能Laravel
- 【dp+離散化+線段樹優化】Paint優化AI
- 離散製造與流程製造的區別
- Java實驗二:類程式設計實驗Java程式設計
- Oracle恢復實驗(三)Oracle
- Java實現網易企業163郵箱傳送郵件Java
- 離散傅立葉變換的衍生,負頻率、fftshift、實訊號、共軛對稱FFT
- js實現的郵箱格式驗證程式碼JS
- 【scikit-learn基礎】--『預處理』之 離散化