?? 2.cpp
字號(hào):
# include <iostream>
# include <math.h>
using namespace std;
int main()
{int i,j,k,m,n,b=0;
int a[50]; /*定義一個(gè)一維數(shù)組,用于存放素?cái)?shù)*/
int c[99][99]; /*定義一個(gè)二維數(shù)組,用于二元關(guān)系R的矩陣表示*/
for (i=2;i<=100;i++)
{ k=sqrt(i);
for (j=2;j<=k;j++)
if (i%j==0) break;
if (j>k){a[b]=i;b=b+1;}
} /*求2到100間的所有素?cái)?shù),并將所有素?cái)?shù)賦值給一維數(shù)組,素?cái)?shù)個(gè)數(shù)為b個(gè)*/
cout<<"素?cái)?shù)有:";
for (i=0;i<b;i++)
{cout<<a[i]<<" ";} /*輸出所有的素?cái)?shù)*/
for (i=2;i<=100;i++)
{for (j=2;j<=100;j++)
for (k=0;k<b;k++)
if(i%a[k]==0 && j%a[k]==0){c[i-2][j-2]=1;break;}
else c[i-2][j-2]=0; } /*求二元關(guān)系R的對(duì)應(yīng)矩陣*/
printf ("\n");
printf ("二元關(guān)系R的矩陣表示\n");
for (i=0;i<=98;i++)
{ for (j=0;j<=98;j++)
cout<<c[i][j]<<" ";
cout<<endl; } /*二元關(guān)系R的矩陣表示*/
k=0 ;
for (i=0;i<=98;i++)
{if(c[i][i]==1) k=k+1;} /*計(jì)算對(duì)角線(xiàn)上元素為1的個(gè)數(shù)*/
printf ("對(duì)角線(xiàn)上元素為1的個(gè)數(shù)為%d\n",k);
if (k==99) printf ("R是自反的\n"); /*對(duì)角線(xiàn)上元素全為1,則R是自反的*/
if (k!=99) printf ("R不是自反的\n");/*對(duì)角線(xiàn)上元素不全為1,則R不是自反的*/
k=0 ;
for (i=0;i<=98;i++)
{for (j=0;j<=98;j++)
if(c[i][j]!=c[j][i]) k=k+1;} /*檢驗(yàn)所有元素是否對(duì)稱(chēng)*/
printf ("非對(duì)稱(chēng)元素的個(gè)數(shù)為%d\n",k);
if (k==0) printf ("R是對(duì)稱(chēng)的\n"); /*所有元素都對(duì)稱(chēng),則R是對(duì)稱(chēng)的*/
if (k!=0) printf ("R不是對(duì)稱(chēng)的\n");/*有元素不對(duì)稱(chēng),則R不是對(duì)稱(chēng)的*/
for (j=0;j<=98;j++)
{for (i=0;i<=98;i++)
if (c[i][j]==1)
{m=i;n=j;
for (k=0;k<=98;k++) /*利用Warshall算法*/
{c[m][k]=c[n][k]+c[m][k];
if (c[m][k]==2) c[m][k]=1;} /*求出R的傳遞閉包的關(guān)系矩陣*/
}
}
printf ("二元關(guān)系R的傳遞閉包的關(guān)系矩陣表示\n");
for (i=0;i<=98;i++)
{ for (j=0;j<=98;j++)
cout<<c[i][j]<<" ";
cout<<endl; } /*二元關(guān)系R的傳遞閉包的關(guān)系矩陣表示*/
printf("R的傳遞閉包為{\n");
for (i=0;i<=98;i++)
{ for (j=0;j<=98;j++)
if (c[i][j]==1) /*根據(jù)R的傳遞閉包的關(guān)系矩陣*/
cout<<"("<<i+2<<","<<j+2<<")"<<","; /*輸出R的傳遞閉包的集合表示*/
cout<<endl;
}
printf("}\n");
return 0; /*如程序正常結(jié)束,向操作系統(tǒng)返回一個(gè)零值*/
}
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -