函数综合练习1507+2091
1507 大小质数
给出一个数n,求出比n大的第一个质数以及比n小的第一个质数。
例如:n = 5,输出7 3,比5大的第一个质数是7,比5小的第一个质数是3。
输入
一个数n(2 < n < 100000000)。
输出
输出2个数,中间用空格分割,分别对应比n大的第一个质数以及比n小的第一个质数。
输入样例
5
输出样例
7 3
参考代码:
#include <iostream> #include <cmath> using namespace std; int n; bool is_prime(int x) { if (x == 1) { return false; } for (int i = 2; i <= sqrt(x); ++i) { if (x % i == 0) return false; } return true; } int main() { cin >> n; for (int i = n + 1; ; ++i) { if (is_prime(i)) { cout << i << ' '; break; } } for (int i = n - 1; i > 1; --i) { if (is_prime(i)) { cout << i << endl; break; } } return 0; }
2091 幸运数字们
如果一个数字的十进制表示中有7,我们就认为他是幸运数字。
输入两个整数L, R(1<=L<=R<=100000)
输出所有满足L<=n<=R的幸运数字n。
从小到大输出所有幸运数字,一行一个。
特别注意如果区间内没有任何一个幸运数字,输出None
输入
一行两个整数L, R,其中1≤L≤R≤100000。
输出
从小到大输出所有幸运数字,一行一个。 特别注意如果区间内没有任何一个幸运数字,输出None
数据范围
对于10%的数据,1≤L≤R≤200; 对于100%的数据,1≤L≤R≤100000;
输入样例
88 111
输出样例
97 107
样例解释
88和111之间仅有97,107这两个数包含7,因此输出这两个数。
#include <iostream> using namespace std; int l, r; bool is_lucky(int x) { while (x > 0) { int t = x % 10; if (t == 7) return true; x /= 10; } return false; } int main() { cin >> l >> r; bool flag = true; for (int i = l; i <= r; ++i) { if (is_lucky(i)) { flag = false; cout << i << endl; } } if (flag) { cout << "None" << endl; } return 0; }