集合中的质数
Posted highlights
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了集合中的质数相关的知识,希望对你有一定的参考价值。
题目描述
给出一个集合和一个数m。
集合里面有n个质数。
请你求出从 1 到 m 的所有数中,至少能被集合中的一个数整除的数的个数。
输入描述:
第一行两个正整数 n 和 m 。
第二行n个正整数,分别为集合中的质数。
输出描述:
输出一个整数,表示符合要求的正整数的个数。
备注:
对于100%的数据,有n<=20,m为有符号64位正整数,集合内质数<=1000000000
#include<bits/stdc++.h> using namespace std; typedef long long LL; const int N = 27; LL a[N], n, m, ans; void dfs(int p, int f, LL cur) {//递归枚举除数 if (p == n) return;//如果递归到头了 if (cur * a[p] <= m) {//如果还可以继续下去 ans += m / (a[p] * cur) * f; dfs(p + 1, -f, cur * a[p]); dfs(p + 1, f, cur); } } int main() { cin >> n >> m; for (int i = 0; i < n; i++) cin >> a[i]; sort(a, a + n);//排序,优先选择小的 dfs(0, 1, 1); cout << ans << endl; return 0; }
以上是关于集合中的质数的主要内容,如果未能解决你的问题,请参考以下文章