判断一个正整数n是否能被一个“幸运数”整除。幸运数是指一个只包含4或7的正整数,如7、47、477等都是幸运数,17、42则不是幸运数。 输入 一行一个正整数n,1≤n≤1000。 输出 一行一个字符串,如果能被幸运数整除“YES”;否则,输出“NO”。C++
时间: 2024-02-13 10:00:14 浏览: 72
1_判断能否被16、4、2整除_随机产生一个0到100之间的整数_源码
以下是一份 C++ 代码实现:
```c++
#include <iostream>
using namespace std;
bool isLucky(int n) {
while (n > 0) {
int digit = n % 10;
if (digit != 4 && digit != 7) {
return false;
}
n /= 10;
}
return true;
}
int main() {
int n;
cin >> n;
for (int i = 1; i <= n; i++) {
if (n % i == 0 && isLucky(i)) {
cout << "YES" << endl;
return 0;
}
}
cout << "NO" << endl;
return 0;
}
```
首先定义了一个函数 `isLucky`,用于判断一个正整数是否为幸运数。这个函数的实现与之前介绍的相同。
在 `main` 函数中,首先读入一个正整数 `n`,然后从 1 开始遍历到 `n`,对于每个遍历到的因子,判断是否同时满足能整除 `n` 和是幸运数,如果是,输出 YES 并返回,否则继续遍历。如果遍历完所有的因子都没有找到符合条件的,输出 NO。
注意,在找到符合条件的因子后,应该立即结束程序,否则会继续遍历,浪费时间。
阅读全文