a121

輸入說明 :

輸入兩個正整數a,b(1<=a<=b<=100000000)。 保證b-a<=1000

輸出說明 :

輸出一個非負整數,代表a到b之間(包含a,b)總共有幾個質數。

找質數其實就是去判斷,2到自己開根號中間有沒有餘數,為什麼是自己開根號呢? 因為假如你有因數的話,這個因數會是成對的,兩個成對的因數相乘等於自己,所以其中一個一定會小於等於自己開根號

#include<stdio.h>
#include<math.h>
int main()
{
    int a,b,i,j,flag,count,root;
    while(scanf("%d %d",&a,&b)!=EOF)
    {
        count=0;
        for(i=a;i<=b;i++)
          { 
            root=sqrt(i);
            flag=0;
              for(j=2;j<=root;j++)
              {   
                  if(i%j==0)
                  {     
                  flag=1;            
                  break;
                }

            }
            if(i==1);
            else if(flag!=1|| i==2)
            {
                count++;
            }            
          }
          printf("%d\n",count);
    }
return 0;
}