一、 实验目的和要求
内容:
编程实现整除关系这一偏序关系上所有盖住关系的求取,并判定对应偏序集是否为格。
要求:
对任意给定正整数,利用整除关系求所有由其因子构成的集合所构成的格,判断其是否为有补格。
二、算法概要:输入n,遍历1到n所有数寻求因子;
整除关系判断有补格,条件即所有的因子都能找到与其最大公约数为1最小公倍数为n的另外一个因子;
求最大公约数用辗转相除法;
下面直接贴代码:
#编程是自己的事,禁止复制粘贴交作业#
#include<iostream>
using namespace std;
int a[100];
int num;
void factor(int n)//显示各因子;
{
int i,j=0,k,t;
int judge =0;
cout<<"能整除的因子有:";
for(i=1;i<=n;i++)
{
if(n%i==0)
{
cout<<i<<" ";
a[j]=i;
j++;
}
}
cout<<endl;
num=j-1;
cout<<"cov "<<n<<"={";
for(k=0;k<=num;k++)
{
for(i=k+1;i<=num;i++)
{
if(a[i]%a[k]==0)
{
judge=2;
if(i-k>1)
{
for(t