freebasic吧 关注:232贴子:706
  • 5回复贴,共1

【】列出质数

只看楼主收藏回复

basic 编码:
10 CLS
20 INPUT "t2=", T2
30 T = TIMER
40 PRINT 2; : M = M + 1
50 T1 = 3
60 DIM S(T2)
70 FOR n = T1 TO INT(SQR(T2)) STEP 2
80 IF S(n) = 0 THEN PRINT n; : M = M + 1: GOSUB 190
100 NEXT n
120 FOR n = n TO T2 STEP 2
130 IF S(n) = 0 THEN PRINT n; : M = M + 1
140 NEXT
150 T = TIMER - T
160 PRINT
170 PRINT "time pass"; T, "TOTAL="; M;
180 END
190 FOR K = n * n TO T2 STEP n: S(K) = 1: NEXT K
200 RETURN
freebasic 编译通过。


IP属地:江苏1楼2020-05-12 21:54回复
    C语言编码:
    #include "stdio.h"
    #include "stdlib.h"
    #include "math.h"
    #include "string.h"
    int main()
    {
    long t1,t2,m=0,i=8,j,*zs=NULL;
    printf("t2=");
    scanf("%ld",&t2);
    t2++;
    zs=(long*)malloc((t2)*sizeof(long));
    if (zs==NULL) {
    printf ("No more memory to this program runing, exit.");
    return(0);
    }
    t1=3;
    printf("2 "); m+=1;
    /* for (i=t1 ; i<=t2;i++) {zs[i]=0;} */
    memset(zs,0,sizeof (long)*t2);
    for (i=t1;i<sqrt(t2); i+=2)
    {
    if (zs[i]==0)
    {
    printf("%ld ",i);
    m+=1;
    for (j=i*i;j<=t2;j+=i)
    {
    zs[j]=1;
    /*printf ("%d, %d, %d \n ",i,j,t2);*/
    }
    }
    }
    for (i=i;i<t2; i+=2)
    { if (zs[i]==0)
    {
    printf("%ld ",i);
    m+=1;
    }
    }
    free(zs);
    printf("\ntotal=%ld",m);
    return (0);
    }
    freeC 编译通过


    IP属地:江苏2楼2020-05-12 21:56
    回复
      经过这两种编程语言编译出的可执行程序可取名为zisu.exe,分别比较他们的运算速度, 在cmd环境下 执行 zisu.exe > 1.txt , 输入50000000然后回车运行,结果发现,C语言编译的可执行程序的运行速度要快过Freebasic编译的可执行程序,大约是6倍。


      IP属地:江苏3楼2020-05-12 22:04
      回复
        插入15 deflng a-z
        这样才能正常运行。


        IP属地:江苏4楼2020-05-12 22:05
        回复
          32位的程序能用到2G的内存。
          64位的程序能用到8G的内存。
          超越的话,程序会被系统踢出运行状态。


          IP属地:江苏5楼2020-05-15 11:06
          回复
            赞一个


            IP属地:河南6楼2020-05-23 11:54
            回复