2013年3月24日 星期日

求質數

學C到現在,求質數可以有不同的判斷方法,但原理其實相同,都是利用質數的特性:只有本身跟 1 可以除盡。就我所知的寫法為下:

1.將本身從 1 開始除,直到除以本身,當餘數等於 0 時,計數器加 1,如果計數器為 2 則該數為質數,並將它印出。


int n;
int i,j=0;

scanf("%d",&n);

for(i=1;i<=n;i++)
{
if(n%i==0)
j++;
}
if(j==2)
printf("質數\n");
else
printf("非質數\n");


2.將本身從 2 開始除,直到除以本身前一位,當餘數等於 0時,計數器加 1 ,如果計數器為 0 ,則該數為質數,並將它印出。


int n;
int i,j=0;

scanf("%d",&n);

for(i=2;i<n;i++)
{
if(n%i==0)
j++;
}
if(j==0)
printf("質數\n");
 else if(n==2)
  printf("質數\n")
else
printf("非質數\n");


其實換個角度也有其他寫法。

以下是我上學期期末考沒寫出來的題目,輸入一個範圍求所有質數:


#include <stdio.h>
#include <stdlib.h>

int main()
{
int n;  //設變數 n  (輸入的數字存放的位置)
int i,j,k=0;         //設變數 i , j ;  k 的初始值為0  ( i 為被除數 , j 為除數 , k 用來計算次數)

scanf("%d", &n); //將輸入的數字存入 n

for(i=2;i<=n;i++) //從 2 開始算起,到輸入的 n 結束
{
for(j=1;j<=i;j++) //從 1 開始除起,到自己本身結束
{
if(i%j==0)        //當本身除以除數,剛好可以整除時
k=k+1; // k 的值加 1
}
if(k==2)    //當 k 等於 2 時
printf("%d\t",i);    //印出本身   \t 為空一格
k=0;      //將 k 值回歸 0 重新計算
}

printf("\n");

system("pause");
return 0;

}

2013年3月12日 星期二

砍掉從練

一學期過了,但總覺得沒學到想學的東西,只是單純混個學分而已,捨棄了熱舞、跆拳道,轉而向空手道,比較感覺的到自己真的有在成長,跟著學長接案子最也一陣子,C#能用,但沒摸熟、SQL,只懂皮毛。

這學期的網路課程是我最感興趣的一門課,如果可以,我想能盡快在這學期學多一些,希望能在暑假時去參加駭客年會,雖然我的程式語言不強,但我想知道我到底跟一般資工系就業、在學的人比較自己的不足,學校能給的資源真的很有限,加上幾乎沒有人知道自己要幹嘛,所以我決定得靠自己從來。
        大學教育,並非想像中的理想,還是靠自己最好。


P.S. 這學期換了新房間、新室友感覺比較像大學生了。