4!0!分!求!调!
查看原帖
4!0!分!求!调!
871004
Manki23333333楼主2023/9/23 20:38
#include <bits/stdc++.h>

using namespace std;

int fa [100005], a, b, p, ans;

int find (int i) {
	return fa [i] == i ? i : (fa [i] = find (fa [i]));
}

void Merge (int i, int j) {
	fa [find (i)] = find (j);
}

bool prime (int x) {
	if (x < 2) return false;
	
	for (int i = 2 ; i * i <= x ; i ++) {
		if (x % i == 0) return false;
	}
	
	return true;
}

int main () {
	cin >> a >> b >> p;
	
	for (int i = 1 ; i <= b ; i ++) 
		fa [i] = i;
		
	for (int i = p ; i <= b ; i ++) {
		if (prime (p)) {
			for (int j = 2 * i ; j <= b ; j += i) {
				Merge (i, j);
			}
		}
	}
	
	for (int i = a ; i <= b ; i ++) {
		if (fa [i] == i) ans ++;
	}
	
	cout << ans;
	return 0;
}
2023/9/23 20:38
加载中...