数学
作者:
二年级学生.
,
2023-04-07 16:08:44
,
所有人可见
,
阅读 195
数学知识1
试除法求质数
#include <iostream>
#include <algorithm>
using namespace std;
bool is_prime(int n)
{
if (n < 2) return false;
for (int i = 2; i <= n / i; i ++)
if (n % i == 0)
return false;
return true;
}
#include <iostream>
#include <algorithm>
using namespace std;
void divide (int n)
{
for (int i = 2; i <= n / i; i ++)
if (n % i == 0)
{
int s = 0;
while (n % i == 0)
{
n /= i;
s ++;
}
printf("%d %d\n", i, s);
}
if (n > 1) printf("%d %d\n", n, 1);
puts("");
}
int main()
{
int n;
scanf("%d", &n);
while (n--)
{
int x;
scanf("%d", &x);
divide(x);
}
return 0;
}
筛选质数
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 100010;
int primes[N], cnt;
bool st[N];
void get_primes(int n)
{
for (int i = 2; i <= n; i ++)
{
if(!st[i]) primes[cnt ++] = i;
for (int j = 0; primes[j] <= n / i; j ++)
{
st[primes[j] * i] = true;
if (i % primes[j] == 0) break;
}
}
}
int main()
{
int n;
cin >> n;
get_primes(n);
cout << cnt << endl;
return 0;
}