声明一个3000*2的数组,第一例存放给定范围内的数值,第二列存放该数值对应的真约数,最后逐行比较找出范围内的“亲密数”。代码如下,使用vs2015编辑
#include<cstdio>
#include<iostream>
using namespace std;int main()
{
int a, b, n, i, sum1 = 0 ;
int B[3000][1];
//int u, v;
int tmp2, u;
int tmp3, v; scanf_s("%d %d", &a, &b);
for (n = a; n <= b; n++)
{
i = 1;
sum1 = 0;
B[n][0] = n;
for (i = 1; i < n; i++)
{
if (n%i == 0)
sum1 = sum1 + i;
}
B[n][1] = sum1;
}
for (u = 1; u <= b; u++)
{
for (v = u+1; v <= b; v++)
{
if (B[u][1]== B[v][0] && B[u][0] == B[v][1])
cout << B[u][0] << " " << B[v][0];
}
}
return 0;
}
现在运行时监控中显示二维数组始终为随机值,且输入时会变红,无法正确输入,特此求教
#include<cstdio>
#include<iostream>
using namespace std;int main()
{
int a, b, n, i, sum1 = 0 ;
int B[3000][1];
//int u, v;
int tmp2, u;
int tmp3, v; scanf_s("%d %d", &a, &b);
for (n = a; n <= b; n++)
{
i = 1;
sum1 = 0;
B[n][0] = n;
for (i = 1; i < n; i++)
{
if (n%i == 0)
sum1 = sum1 + i;
}
B[n][1] = sum1;
}
for (u = 1; u <= b; u++)
{
for (v = u+1; v <= b; v++)
{
if (B[u][1]== B[v][0] && B[u][0] == B[v][1])
cout << B[u][0] << " " << B[v][0];
}
}
return 0;
}
现在运行时监控中显示二维数组始终为随机值,且输入时会变红,无法正确输入,特此求教