2015年10月29日 星期四

C 判斷奇偶數與質數


C 判斷奇偶數與質數


程式碼  source code download

解題一
設想兩數所有的可能情況,a>b、B>a、a=b

解題二
當個情況中,判斷奇偶數
判斷方法,% 取餘數是否為零,做 true false 判斷

解題三
當是奇數時候,需判斷是否為質數
這邊大家問題都會想很深,甚至開根號處理,用最簡單的方式
只要設定兩變數,一個假設為 i,另一個為奇數
當奇數減一,且可以被餘數 i 整除為零,再做一次 true false 判斷
即可取出奇數是否為質數,無公因數的數字就是為質數


#include "stdio.h"
#include "stdlib.h"
#include "math.h"
int main(void) {
 int a,b,i,t;
 printf("a => ");
 scanf("%d", &a);
 printf("b => ");
 scanf("%d", &b);
 //if a>b
 if(a>b){
  printf("%d>%d\n", a,b);
  if((a%2)==0)
   printf("%d 偶數\n", a);
  else
   if (a==1)
    a=0;
   else if(a==0)
    t=1;
   else{
    for(i=a-1; i>1; i=i-1){
     if(a%i==0){
      t=0;
      break;
     }
    }
    if(t)
     printf("%d 奇數是質數\n",a);
    else
     printf("%d 奇數不是質數\n",a);
   }
   if((b%2) ==0)
    printf("%d 偶數\n", b);
   else
    if (b==1)
     t=0;
    else if(b==0)
     t=1;
    else{
     for(i=b-1; i>1; i=i-1){
      if(b%i==0){
       t=0;
       break;
      }
     }
     if(t)
      printf("%d 奇數是質數\n",b);
     else
      printf("%d 奇數不是質數\n",b);
    }
   //if b > a
   }else if(b>a){
    printf("%d>%d\n", b,a);
    if((a%2)==0)
     printf("%d 偶數\n", a);
    else
     if (a==1)
      t=0;
     else if(a==0)
      t=1;
     else{
      for(i=a-1; i>1; i=i-1){
       if(a%i==0){
        t=0;
        break;
       }
      }
      if(t)
       printf("%d 奇數是質數\n",a);
      else
       printf("%d 奇數不是質數\n",a);
     }
     if((b%2) ==0)
      printf("%d 偶數\n", b);
     else
      if (b==1)
       t=0;
      else if(b==0)
       t=1;
      else{
       for(i=b-1; i>1; i=i-1){
        if(b%i==0){
         t=0;
         break;
        }
       }
       if(t)
        printf("%d 奇數是質數\n",b);
       else
        printf("%d 奇數不是質數\n",b);
      }
     // if a = b
     }else if(a=b){
      printf("%d=%d\n", a,b);
      if((a%2)==0)
       printf("%d 偶數\n", a);
      else
       if (a==1)
        t=0;
       else if(a==0)
        t=1;
       else{
        for(i=a-1; i>1; i=i-1){
         if(a%i==0){
          t=0;
          break;
         }
        }
        if(t)
         printf("%d 奇數是質數\n",a);
        else
         printf("%d 奇數不是質數\n",a);
       }
       if((b%2) ==0)
        printf("%d 偶數\n", b);
       else
        if (b==1)
         t=0;
        else if(b==0)
         t=1;
        else{
         for(i=b-1; i>1; i=i-1){
          if(b%i==0){
           t=0;
           break;
          }
         }
         if(t)
          printf("%d 奇數是質數\n",b);
         else
          printf("%d 奇數不是質數\n",b);
        }
       }
       system("PAUSE");
       return 0;
      }
質數解法以上為比較直覺的作法,也有另一個走法 #include "math.h" 函數後,用 sqrt() library 處理
Share:

0 意見: