注册 登录
编程论坛 C语言论坛

求助,程序跑的太慢

找见 发布于 2018-09-22 16:06, 996 次点击
这是一个求2的32次方以内素数的程序,但是跑的太慢了,希望有大佬能帮我改一下

#include<stdio.h>
#include<math.h>
int main()
{
    long long int n=2;
    int i;
    long long int a;
    for(i=0;i<32;i++)
    {
        n=n*2;
    }
    printf("%lld\n",n);
    a=sqrt(n);
    printf("%lld\n",a);
    long long int i1,i2;
    for(i1=2;i1<=a;i1++)
    {
      for(i2=2;i2<=i1;i2++)
      {
          if(i1%i2==0)
          break;
      }
      if(i1==i2)
      {
          printf("%lld,",i1);
      }
    }
    for(i2=a+1;i2<=n;i2++)
    {
        for(i1=2;i1<=a;i1++)
        {
            if(i2%i1==0)
            {
                break;
            }
        }
        if(i1<=a)
            {
            }
            else
            {
                printf("%lld,",i2);
            }
    }
    return 0;
}
2 回复
#2
MeandC2018-09-24 14:10
真是,运行后数字一直不停的显示
数字太多,显示出数字来已经没有意义了,改成计数然后输出计数结果会快很多。
32改成22就快多了,计数的几秒钟就搞定,显示这些数字的话也要挺久的。
#3
kfyniriu2018-09-24 20:55
printf("2\t");      
for(i = 3; i <= n ; i++)
{
    q = sqrt(i);
    for(j = 2; j <= q; j++)
        if(i % j == 0)
            break;
    if(j > q)
        printf("%d\t", i);
}
1