小编Mys*_*ial的帖子

快速算法查找两个数字之间的素数

我的问题减少到找到两个给定数字之间的素数.我可以有一个大的范围1 to (1000)!,因此我需要一些数学优化.

显然,筛分方法在这种情况下会太慢.是否有任何可以应用的数学优化 - 例如,占用这个大空间的较小子集并推断其余数字.

PS:看起来我可能已经走到了死胡同 - 但我正在寻找的是一些可能有助于解决这个问题的优化.而且,我只是在寻找单线程方法.

编辑:我一直在思考的一种方法,可以解决许多大质数相关的问题 - 是有人维护全局素数表并使其可用于查找.PrimeGrid项目的人们可以为此做出有益的贡献.

algorithm math primes

9
推荐指数
1
解决办法
2万
查看次数

什么是'未定义的参考'pow''

我有一个键盘.

在第15行内的for函数

 for(i=2; i<=90; i+=2){
    int j=0+i;
    printf("%i\n",i);
    power=pow(inp,j);
    factor=factorial(i);
    if(i%4==0)fAns += power/factor;
    else fAns -= power/factor;
  }
Run Code Online (Sandbox Code Playgroud)

power=pow(inp,j);我添加的行j而不是使用,i因为它给了我同样的错误.undefined reference to 'pow'.

如果我j用2 替换,那么它工作正常,但当我使用j=i它不会工作.递增此行是否有问题?

我希望这个增加,而不是给我一个错误.

c

9
推荐指数
1
解决办法
9438
查看次数

在c ++中是否有等效的Java equals方法?

有类似Java的东西equals()吗?要比较对象是否是同一类型?

public boolean equals(Object obj) {
    if (obj == null || !(obj instanceof ViewMode)) {
        return false;
    }

    ViewMode dm = (ViewMode) obj;
    return dm.width == w
        && dm.h == h
        && dm.b == b
        && dm.f == f;
}

public int hashCode() {
    return w ^ h ^ f  ^ b ;
}
Run Code Online (Sandbox Code Playgroud)

c++ variables comparison

9
推荐指数
3
解决办法
6680
查看次数

指针算法是否仍在数组外工作?

我总是在读取指针算法的定义,只要你不离开数组的边界即可.我不确定我完全理解这意味着什么,我有点担心.因此这个问题.

假设我从一个指向数组开头的指针开始:

int *p = (int*) malloc(4 * sizeof(int));
Run Code Online (Sandbox Code Playgroud)

现在我创建了两个位于数组边界之外的新指针:

int *q = p + 10;
int *r = p - 2;
Run Code Online (Sandbox Code Playgroud)

现在指针q-10,q-9..., ,r+2,r+3等所有的谎言数组的边界内.它们有效吗?例如,r[3] 保证给出相同的结果p[1]

我做了一些测试,它的工作原理.但我想知道这是否适用于通常的C规范.具体来说,我使用的是Visual Studio 2010,Windows,而且我使用的是原生C(非C++)编程.我被覆盖了吗?

c arrays pointers language-lawyer

9
推荐指数
2
解决办法
1000
查看次数

C/C++:将0赋值给无符号长变量或者将变量与自身进行xor分解是否更快?

我意识到差异可以忽略不计,但是在尝试将无符号长度归零时哪个更有效?

unsigned long x;

...

x=0;

--OR--

x^=x;
Run Code Online (Sandbox Code Playgroud)

泰勒

c c++ performance xor variable-assignment

9
推荐指数
2
解决办法
1184
查看次数

声明与c中的定义

最近在学习c编程时我发现了一些我觉得有趣的东西.我曾经读过,类似的语句int i=0;是强制定义的唯一方法,而语句就像extern int i;强制声明一样.类似的陈述int i;将取决于上下文.但是当我将extern与初始化相结合时会发生什么extern int i=13;.编译器生成警告.但这条规则对此有何规定?

c

8
推荐指数
1
解决办法
256
查看次数

警告:初始化中的指针目标在签名方面有所不同

我的编译器(gcc)显示警告

#include<stdio.h>

struct s{
     unsigned char *p;
};

int main() {
    struct s a = {"??/??/????"}; //warning
    printf("%s",a.p);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

警告:初始化中的指针目标在签名方面有所不同

请帮我解释为什么会出现此警告.

c

8
推荐指数
2
解决办法
5万
查看次数

以下汇编指令添加了什么-8(%rbp),%xmm0?

我试图弄清楚汇编指令实际上做了什么

addsd   -8(%rbp), %xmm0
Run Code Online (Sandbox Code Playgroud)

我知道它是带有SSE2的x86-64机器上的浮点运算.另外,我知道%xmm0是一个寄存器.但是,我不确定的是-8(%rbp)的含义.手册有点令人困惑.

基本上,问题是,-8(%rbp)意味着它从寄存器中获取一个值(可能是rbp的最后8个字节),还是从内存中获取一个值(偏移量为-8的浮点值) rbp中包含的地址.

x86 assembly x86-64 memory-access sse2

8
推荐指数
1
解决办法
4589
查看次数

通过ARM NEON组件最大限度地优化元素乘法

我正在为双Cortex-A9处理器优化两个单维阵列的元素乘法.Linux正在运行,我正在使用GCC 4.5.2编译器.

所以以下是我的C++内联汇编程序函数.src1,src2和dst是16字节对齐的.

更新:可测试代码:

void Multiply(
    const float* __restrict__ src1,
    const float* __restrict__ src2,
    float* __restrict__ dst,
    const unsigned int width,
    const unsigned int height)
{
    int loopBound = (width * height) / 4;
    asm volatile(
        ".loop:                             \n\t"
        "vld1.32  {q1}, [%[src1]:128]!      \n\t"
        "vld1.32  {q2}, [%[src2]:128]!      \n\t"
        "vmul.f32 q0, q1, q2                \n\t"
        "vst1.32  {q0}, [%[dst]:128]!       \n\t"
        "subs     %[lBound], %[lBound], $1  \n\t"
        "bge      .loop                     \n\t"
        :
        :[dst] "r" (dst), [src1] "r" (src1), [src2] "r" (src2),
        [lBound] "r" (loopBound)
        :"memory", "d0", "d1", "d2", …
Run Code Online (Sandbox Code Playgroud)

c++ optimization assembly arm neon

8
推荐指数
1
解决办法
1497
查看次数

_mm_shuffle_ps()等效于整数向量(__m128i)?

_mm_shuffle_ps()固有允许一个交织浮子投入低2个浮纱和高2个漂浮的输出.

例如:

R = _mm_shuffle_ps(L1, H1, _MM_SHUFFLE(3,2,3,2))
Run Code Online (Sandbox Code Playgroud)

将导致:

R[0] = L1[2];
R[1] = L1[3];
R[2] = H1[2];
R[3] = H1[3]
Run Code Online (Sandbox Code Playgroud)

我想知道整数数据类型是否有类似的内在可用?有两个__m128i变量和掩码进行交错的东西?

_mm_shuffle_epi32()内在的,只需一个128位向量,而不是两个.

c sse

8
推荐指数
1
解决办法
6449
查看次数