标题:求助,程序跑的太慢
只看楼主
找见
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2018-3-9
结帖率:66.67%
 问题点数:0 回复次数:2 
求助,程序跑的太慢
这是一个求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;
}
搜索更多相关主题的帖子: include int long for printf 
2018-09-22 16:06
MeandC
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:8
帖 子:245
专家分:792
注 册:2018-7-14
得分:0 
真是,运行后数字一直不停的显示
数字太多,显示出数字来已经没有意义了,改成计数然后输出计数结果会快很多。
32改成22就快多了,计数的几秒钟就搞定,显示这些数字的话也要挺久的。

C果然是有点难啊!
2018-09-24 14:10
kfyniriu
Rank: 6Rank: 6
等 级:侠之大者
威 望:9
帖 子:105
专家分:426
注 册:2018-7-6
得分:0 
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);
}
2018-09-24 20:55



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-489942-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 1.024692 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved