天天看点

离散数学 偏序关系中盖住关系的求取及格论中有补格的判定

内容:

编程实现整除关系这一偏序关系上所有盖住关系的求取,并判定对应偏序集是否为格。

要求:

    对任意给定正整数,利用整除关系求所有由其因子构成的集合所构成的格,判断其是否为有补格。

#include<iostream.h>
int min(int a,int b)//求最大公约数
{
	int k=0,s=0;
	if(a>b)
	{
		k=a%b;
		s=b;
	}
	else
	{
		k=b%a;
		s=a;
	}
	if(k==0)
		return s;
	else
		min(k,s);
}
int max(int a,int b,int k)//求最小公倍数
{
	int s;
	s=a*b/k;
	return s;
}
void main()
{
	int i,j,z,n=1;
	bool q=true;
	int k;
	int a[100];
	bool o[100];
	cin>>z;
	k=z/2;
	for(i=1;i<=k;i++)
	{
		a[n-1]=i;
		if (z%i==0)
			n++;
	}
	a[n-1]=z;
	for(i=0;i<n;i++)
	{
		o[i]=false;
		for(j=0;j<n;j++)
			if(i!=j)
				if(min(a[i],a[j])==1&&max(a[i],a[j],min(a[i],a[j]))==z)
					o[i]=true;
	}
	for(i=0;i<n;i++)
		if(!o[i])
			q=false;
	if(q)
		cout<<"是有补格"<<endl;
	else
		cout<<"不是有补格"<<endl;
}
           

继续阅读