- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
<分区>
我尝试为这个[问题]实现分段筛算法:http://www.spoj.pl/problems/PRIME1/如下:
#include <iostream>
#include <string>
#include <set>
#include<math.h>
#include<vector>
#include<cstdlib>
#include<cstdio>
#include<cstring>
#include<cstdio>
#define MAX 32000 // sqrt of the upper range
using namespace std;
int base[MAX]; // 0 indicates prime
vector<int> pv; // vector of primes
int mod (int a, int b)
{
if(b < 0)
return mod(-a, -b);
int ret = a % b;
if(ret < 0)
ret+=b;
return ret;
}
void sieve(){
for(int i = 2 ; i * i < MAX ; i++ )
if(!base[i])
for(int j = i * i ; j < MAX ; j += i )
base[j] = 1;
for(int i = 2 ; i < MAX ; i++ )
if(!base[i]) pv.push_back(i);
}
int fd_p(int p ,int a ,int b){ // find the first number in the range [a,b] which is divisible by prime p
/* while(1){
if(a % p == 0 && a !=p) break;
a++;
}
return a;
*/
if(a != p){
return (a + mod(-a,p)) ;
}
else{
return (a + p);
}
}
void seg_sieve(int a , int b){
if(b < 2 ){
cout << "" ;
return;
}
if(a < 2){
a = 2;
}
int i,j;
int seg_size = b - a + 1;
int*is_prime = new int[seg_size];
memset(is_prime,0,seg_size*sizeof(int));
vector<int> :: iterator p ;
for(p = pv.begin(); p!=pv.end(); p++){
int x = fd_p(*p,a,b);
for(i = x; i <= b; i += *p )
is_prime[i - a] = 1;
}
for(i=0; i < b - a + 1; i++)
if(!is_prime[i])
printf("%u\n", i + a);
delete []is_prime ;
}
int main()
{
sieve();
int a,b,T;
scanf("%d",&T);
while(T--){
scanf("%d%d",&a,&b);
seg_sieve(a,b);
printf("\n");
}
// cout<<endl;
// system("PAUSE");
return 0;
}
尽管如此,我还是遇到了 TLE。我不明白还需要什么其他优化。请帮助..
编辑 1:只是试图在恒定时间内实现 fd_p() ... [失败] .. 如果你能帮助我解决这个错误......请问......
编辑 2:问题已解决。
这个问题在这里已经有了答案: C - determine if a number is prime (12 个答案) 关闭 4 年前。 这是 C 程序。这是我的code在下面。我用了nano在终端。
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
和17一样,是质数,反过来,71也是质数。 我们设法得到了这段代码,但我们无法完成它。 #include main() { int i = 10, j, c, sum, b, x, d, e
好像is-prime和 .is-prime区别对待他们的论点: > is-prime('11') True > '11'.is-prime No such method 'is-prime' for
我正在尝试收集有关素数的一些统计数据,其中包括数字 (prime-1)/2 的因数分布。我知道有统一选择数的因子大小的通用公式,但我还没有看到任何关于小于一个素数的因子分布的信息。 我编写了一个程序,
BigInteger的JavaDoc让我感觉很不安全,例如下面的构造函数说: BigInteger(int bitLength, int certainty, Random rnd) Construc
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我需要将蓝牙模块连接到A-Star 32U4 Prime SV microSD,但无法使其工作。作为背景,我有一个Pololu双G2大功率电机驱动器24v18盾牌Arduino连接到它。。该项目是一个
我需要将蓝牙模块连接到A-Star 32U4 Prime SV microSD,但无法使其工作。作为背景,我有一个Pololu双G2大功率电机驱动器24v18盾牌Arduino连接到它。。该项目是一个
一 构建后的图 二 实现 package graph.prim; import java.util.Scanner; public class Prim { static final in
关闭。这个问题是off-topic .它目前不接受答案。 想改善这个问题吗? Update the question所以它是 on-topic对于堆栈溢出。 9年前关闭。 Improve this q
我需要编写一个程序来输入一个数字并以以下形式输出其阶乘的质因数分解: 4!=(2^3)*(3^1) 5!=(2^3)*(3^1)*(5^1) 问题是我仍然不知道如何得到那个结果。 显然,括号中的每个第
我目前正在做一个项目,我需要一种有效的方法来计算素数。我使用了sieve of Eratosthenes,但是我一直在搜索,发现sieve of Atkin是一种更有效的方法。我发现很难找到对此方法的
我想找到总和为给定值的最小素数集,例如9 = 7 + 2(不是 3+3+3)。 我已经使用 sieve of eratosthens 生成了一个素数数组 我按降序遍历数组,以获得数组中小于或等于给定数
我正在学习 Real World Haskell(我在第 4 章),为了进行一些课外练习,我创建了以下程序来计算第 n 个素数。 import System.Environment isPrime p
我试图发现大数分解的复杂性。 哪一个是最佳算法,哪一个是找到数字的素因数的复杂性?假设数字的长度为n。 最佳答案 用于分解大于100个数字的整数的最知名算法是General number field
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Generating the partitions of a number Prime number sum
让我们看看我们想要找到 1 到 1000 之间的所有数字,这些数字表示为两个素数之和。例如 8 = 3+5, 24 = 13+11 现在这可以通过迭代 1 到 1000 之间的素数列表在 O(n^2)
我学会了一种叫做“线性筛”的算法https://cp-algorithms.com/algebra/prime-sieve-linear.html能够在线性时间内得到所有小于 N 的素数。 这个算法有
我正在学习 Idris,作为个人练习,我想实现一个 Primes类型,由所有素数组成。 在 idris 中是否有一种方法可以从一个类型和一个属性开始定义一个新类型,它将选择该属性为真的起始类型的所有元
我是一名优秀的程序员,十分优秀!