内容:
编程实现整除关系这一偏序关系上所有盖住关系的求取,并判定对应偏序集是否为格。
要求:
对任意给定正整数,利用整除关系求所有由其因子构成的集合所构成的格,判断其是否为有补格。
#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;
}