天天看點

離散數學 偏序關系中蓋住關系的求取及格論中有補格的判定

内容:

程式設計實作整除關系這一偏序關系上所有蓋住關系的求取,并判定對應偏序集是否為格。

要求:

    對任意給定正整數,利用整除關系求所有由其因子構成的集合所構成的格,判斷其是否為有補格。

#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;
}
           

繼續閱讀