文章
2
粉丝
164
获赞
0
访问
1.6k
我构造了两个数组,分别用来存储对应下标的素数个数,我的存储数组的内容是没有错的,但是我最后的结果总是不对,有没有佬能解决一下的
代码如下
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1000000 + 5;
int prime[maxn];
void getPrime() {
memset(prime, 0, sizeof(prime));
for (int i = 2; i <= maxn; i++) {
if (!prime[i])
prime[++prime[0]] = i;
for (int j = 1 ; j <= prime[0] && prime[j]*i <= maxn; j++) {
prime[prime[j] * i] = 1;
if (i % prime[j] == 0)
break;
}
}
}
int jc(int a) {
if (a == 0)
return 1;
else {...
登录后发布评论
从你发的代码中没有实现你说的这个思路
还有一个细节问题你没考虑到
1000的阶乘会爆int和long long所以不能直接算阶乘值
在计算的过程中就要分解素因数
你的a中途参与运算了,导致最后的for循环a变成了1,可以用个临时变量存一下a的值。