#3039. 真约数邻接矩阵

真约数邻接矩阵

题目描述

如果一个正整数 xx 的所有真约数(不包括自身的约数)之和为 yy,且 y<xy < x,则称 xxyy 可以相互变换(即 xx 可以变为 yyyy 也可以变为 xx)。

例如:

  • 4 的真约数之和为 1+2=31+2=3,且 3<43 < 4,因此 4 与 3 可相互变换;
  • 6 的真约数之和为 1+2+3=61+2+3=6,因 66 不小于 66,故 6 不能与任何数(包括自身)变换。

现给定一个正整数 nn,要求构建一个 nn 阶邻接矩阵,表示 1 到 nn 中所有数字的变换关系。矩阵中第 ii 行第 jj 列的元素为 11 当且仅当 iijj 可相互变换,否则为 00(注意:矩阵下标从 11 开始对应数字 11nn)。

输入格式

输入一个正整数 nn1n1001 \leq n \leq 100)。

输出格式

输出 nn 行,每行包含 nn 个整数(0011),表示数字 11nn 的变换关系邻接矩阵。每行的整数之间用空格分隔。

样例

样例输入

7  

样例输出

0 1 1 0 1 0 1  
1 0 0 0 0 0 0  
1 0 0 1 0 0 0  
0 0 1 0 0 0 0  
1 0 0 0 0 0 0  
0 0 0 0 0 0 0  
1 0 0 0 0 0 0  

数据范围与提示

  • 数据范围1n1001 \leq n \leq 100
  • 约数之和计算:对于数字 xx,其真约数是指小于 xx 且能整除 xx 的正整数,约数之和 y={y = \sum \{ 真约数 }\}。例如,88 的真约数为 1,2,41, 2, 4,故 y=1+2+4=7y = 1+2+4=7