判断一个正整数n是否能被一个“幸运数”整除。幸运数是指一个只包含4或7的正整数,如7、47、477等都是幸运数,17、42则不是幸运数。写出C+代码
时间: 2024-02-13 21:59:50 浏览: 79
好的,下面是代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
bool isLucky(int n) {
string s = to_string(n); // 将数字转换成字符串
for (char c : s) {
if (c != '4' && c != '7') { // 如果数字中包含除4和7之外的数字
return false;
}
}
return true;
}
int main() {
int n, m;
cin >> n >> m;
if (isLucky(m) && n % m == 0) { // 如果m是幸运数且n能够整除m
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
```
首先定义一个 `isLucky` 函数,用来判断一个数是否是幸运数。这个函数将数字转换成字符串,然后遍历字符串中的每个字符,如果发现字符不是 '4' 或 '7',则返回 false,否则返回 true。
在主函数中,首先读入两个数 n 和 m,然后判断 m 是否是幸运数,并且 n 是否能够整除 m。如果满足条件,则输出 "Yes",否则输出 "No"。
相关问题
判断一个正整数n是否能被一个“幸运数”整除。幸运数是指一个只包含4或7的正整数,如7、47、477等都是幸运数,17、42则不是幸运数。C++代码
下面是一个简单的 C++ 代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
bool isLucky(int n) {
while(n > 0) {
if(n % 10 == 4 || n % 10 == 7) {
n /= 10;
} else {
return false;
}
}
return true;
}
int main() {
int n;
cin >> n;
bool found = false;
for(int i = 1; i <= n; i++) {
if(n % i == 0 && isLucky(i)) {
found = true;
break;
}
}
if(found) {
cout << "YES" << endl;
} else {
cout << "NO" << endl;
}
return 0;
}
```
这个程序首先定义了一个 `isLucky` 函数,用于判断一个数是否为“幸运数”。这个函数的实现思路很简单,就是不断地取出这个数的最低位数字,判断它是否为 4 或 7,如果是的话就把这个数字除以 10,继续判断下一位数字,如果不是的话就返回 false。如果这个数的所有位都是 4 或 7,那么就返回 true。
然后在主函数中,我们从标准输入读入一个正整数 n,然后从 1 到 n 枚举每一个数,判断它是否能整除 n 并且是“幸运数”,如果找到了这样的数,就输出 YES 并退出循环,否则输出 NO。
判断一个正整数 n 是否能被一个“幸运数”整除。幸运数是指一个只包含 4 或 7 的正整数,如 7、47、477 等都是幸运数,17、42 则不是幸运数。利用C++实现
可以使用以下代码实现:
```c++
#include <iostream>
#include <string>
using namespace std;
bool isLucky(int n) {
string s = to_string(n);
for (char c : s) {
if (c != '4' && c != '7') {
return false;
}
}
return true;
}
int main() {
int n;
cin >> n;
if (isLucky(n)) {
cout << "Yes" << endl;
} else {
cout << "No" << endl;
}
return 0;
}
```
首先,定义一个名为 `isLucky` 的函数,用于判断一个正整数是否为幸运数。该函数接受一个整数参数 `n`,将其转换为字符串,然后逐个检查字符串中的每个字符,如果不是 '4' 或 '7',则返回 false,否则返回 true。
然后,在主函数中读入一个整数,调用 `isLucky` 函数判断该整数是否为幸运数,如果是则输出 "Yes",否则输出 "No"。
阅读全文