#7920: c#TLE


hulkxbox (哈哈)


 請問有哪裡還可以改進的嗎??
 
 
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int main ()
{
    int b,c,i;

    while(scanf("%d",&b)!=EOF)
    {



        for (c=2;c<=sqrt(b);c++)
         {
            if (b%c==0)
            break;
         }

        if (c<=b/2) printf("非質數\n");
        else printf("質數\n");
    }



return 0;
}

#7928: Re:c#TLE


tomoyaken14 (歐練)


 請問有哪裡還可以改進的嗎??
 
 
#include
#include
#include
int main ()
{
    int b,c,i;

    while(scanf("%d",&b)!=EOF)
    {



        for (c=2;c<=sqrt(b);c++)
         {
            if (b%c==0)
            break;
         }

        if (c<=b/2) printf("非質數\n");
        else printf("質數\n");
    }



return 0;
}


C#?
#7929: Re:c#TLE


akira0331 (小迷糊)


 請問有哪裡還可以改進的嗎??
#include
#include
#include
int main ()
{
    int b,c,i;

    while(scanf("%d",&b)!=EOF)
    {



        for (c=2;c<=sqrt(b);c++)
         {
            if (b%c==0)
            break;
         }

        if (c<=b/2) printf("非質數\n");
        else printf("質數\n");
    }



return 0;
}


以我的做法,一般的質數判斷,我會先判斷輸入是否偶數,偶數裡只有2是質數其它的都不是

如果是奇數就從3開始跑,每次+2做判斷

但是其題修改過之後,這種每輸入一次跑一迴圈的方法已經行不通了

需要先建質數表,簡單的說就是先找出2~2147483647的質因數

學會建質數表之後UVa的質數問題都能解了