【发布时间】:2016-05-12 15:59:41
【问题描述】:
我正在做这个练习:给出一个由 n 个整数组成的序列,每个整数不大于 1000(按绝对值)。编写程序除数,找出给定整数中有多少具有以下性质:整数被 m 个正除数整除(每个除数不应等于 1,或整数本身)。
结果应如下所示:
输入:7 4
6 20 12 64 1024 50 24
输出:3
解释:给定序列的元素正好有 4 个除数,分别是 20、12 和 50。
这是我的代码:
#include <iostream>
using namespace std;
bool divisors(int a, int m) {
int br = 0;
for (int i = 2; i < a; ++i) {
if (a % i == 0)br++;
if (br == m) return 1;
else return 0;
}
}
int main() {
int n; // the number of elements
int m; // the number of divisors
int a, i, k = 0;
cin >> n >> m;
for (i = 1; 1 <= n; i++) {
cin >> a;
if (divisors(a, m)) k++;
}
cout << k << endl;
return 0;
}
【问题讨论】:
-
你的意思是它不打印任何东西,或者它不打印你期望的东西,或者当你明确写
return 0时你希望它实际上是return k,还是别的什么? -
它实际上不打印任何东西:/
-
基本上 k 应该返回 4,如果你运行我在介绍中写的示例输入
-
50 完全可以被 4 整除?真的吗?
-
@SagarPatel 别傻了! :) 50 正好有 4 个除数:2、25、10、5。