蒟蒻问一下代码结尾的-n+1是什么意思,为什么去掉-n+1就错了
查看原帖
蒟蒻问一下代码结尾的-n+1是什么意思,为什么去掉-n+1就错了
463562
Dreamerlee✅楼主2021/3/16 15:34

贴一下某大佬的代码,求大佬解释一下结尾的-n+1的意思


#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
const int maxn = 10000010;
const int inf = 10000010;
long long n, m, ans;
long long idx = 1, prem[inf];
bool fl[inf], ins[inf];
int main() {
	cin >> n >> m;
	fl[1] = 0;
	for (int i = 2; i <= 50005; i++) {
		if (fl[i] == 0) {
			prem[idx] = i;
			idx++;
		}
		for (int j = 1; j < idx && prem[j] * i <= 50005; j++) {
			fl[i * prem[j]] = 1;
			if (i % prem[j] == 0) break;
		}
	}
	long long p, q;
	for (int i = 1; i <= idx; i++) {
		if (prem[i] > m)break;
		p = ceil(n * 1.0 / prem[i]), q = ceil(m * 1.0 / prem[i]);
		if (p == 1)p = 2;
		for (int j = p; j <= q && prem[i] * j <= m; j++)
			ins[prem[i] * j-n+1] = 1;//-n+1是什么意思
	}
	int tot = 0;
	for (int i = 1; i <= m-n+1; i++) //这里的-n+1同理不懂
		if (!ins[i]) tot++;
	cout << tot;
	return 0;
}
```cpp
2021/3/16 15:34
加载中...