内容:
程式設計實作整除關系這一偏序關系上所有蓋住關系的求取,并判定對應偏序集是否為格。
要求:
對任意給定正整數,利用整除關系求所有由其因子構成的集合所構成的格,判斷其是否為有補格。
#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;
}