YBT:1154:亲和数
#include<bits/stdc++.h>
using namespace std;
bool isAmicable(int n)
{
int k;
for(int i=1;i<=n;i++)
{
if(n%i==0&&i!=n)
return true;
}
for(int j=1;j<=k;j++)
{
if(k%j==0&&j!=k)
return true;
}
return true;
}
int main()
{
int a[101],b[101],l,s1=0,s2=0,min=10000,a,b;
for(l=1;l<=100;l++;)
{
for(int i=1;i<=l;i++)
{
if(isAmicable(i))
a[l]=l;
s1+=a[l];
}
for(int j=1;j<=l;j++)
{
if(isAmicable(j))
b[l]=l;
s2+=b[l];
}
if(s1==b[l]&&s2==a[l]&&b[l]!=a[l]&&a[l]<b[l])
{
if(min>a[l]+b[l])
{
a=a[l];
b=b[l];
}
}
}
cout<<a<<" "<<b;
return 0;
}
为什么编译错误?

为什么不对?求题解~~
- 写回答
- 好问题 0 提建议
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- 拜见老天師 2022-08-28 07:54关注
#include <bits/stdc++.h> using namespace std; bool isAmicable(int n) { int k; for (int i = 1; i <= n; i++) { if (n % i == 0 && i != n) return true; } for (int j = 1; j <= k; j++) { if (k % j == 0 && j != k) return true; } return true; } int main() { int a[101], b[101], l, s1 = 0, s2 = 0, min = 10000, A, B; for (l = 1; l <= 100; l++) { for (int i = 1; i <= l; i++) { if (isAmicable(i)) a[l] = l; s1 += a[l]; } for (int j = 1; j <= l; j++) { if (isAmicable(j)) b[l] = l; s2 += b[l]; } if (s1 == b[l] && s2 == a[l] && b[l] != a[l] && a[l] < b[l]) { if (min > a[l] + b[l]) { A = a[l]; B = b[l]; } } } cout << A << " " << B; return 0; }
因为你的变量名a和数组a在下面它认为你是用表示数组的a去接收赋值,避免这样命名
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报展开全部4条评论