电竞比分网-中国电竞赛事及体育赛事平台

分享

C經(jīng)典問題整理(一)(素?cái)?shù),公倍公約數(shù),斐波那契數(shù)列)

 panhaosun 2011-10-14

素?cái)?shù):

按照素?cái)?shù)的定義,可以用2~number-1的所有證書去除number,只要有能整除的,便說明number不是素?cái)?shù)。不過對任意值的number檢驗(yàn)它是否為素?cái)?shù)時(shí),不必使用比其平方根大的數(shù)取整除它。

#include <stdio.h>

#include <math.h>

int IsPrimeNumber(int number);

void main()

{

int a;

printf("Input a integer number: ");

scanf("%d",&a);

if (IsPrimeNumber(a))

{

printf("%d is prime number.\n",a);

}

else

printf("%d isn't prime number.\n",a);

}

int IsPrimeNumber(int number)

{

int i;

if(number<=1) return 0;

for(i=2;i<sqrt(number);i++)

{

if(number%i==0) return 0;

return 1;

}

}

最大公約數(shù)與最小公倍數(shù):歐幾里德算法(輾轉(zhuǎn)相除法),計(jì)算原理依賴如下定理:

gcd(a,b)=gcd(b,a mod b)

code:

#include <stdio.h>

void swap(int*a,int*b);

int MaxCommonFactor(int a,int b);//最大公約數(shù)

int MinCommonMultiple(int a,int b);//最小公倍數(shù)

void main()

{

int x,y,z,p;

scanf("%d,%d",&x,&y);

z=MaxCommonFactor(x,y);

p=MinCommonMultiple(x,y);

printf("%d,%d\n",z,p);

}

void swap(int*a,int*b)

{

int temp;

temp=*a;

a=b;

*b=temp;

}

int MaxCommonFactor(int a,int b)

{

int temp;

if (b>a)

{

swap(&a,&b);

}

while(a%b!=0)

{

temp=b;

b=a%b;

a=temp;

}

return b;

}

int MinCommonMultiple(int a,int b)

{

return (a*b)/MaxCommonFactor(a,b);//最小公倍數(shù)=兩數(shù)相乘/最大公約數(shù)

}

斐波那契數(shù)列:

其第一項(xiàng)和第二項(xiàng)的值都為1,以后各項(xiàng)的值為其前兩項(xiàng)值之和。所以要計(jì)算第n項(xiàng)的值f(n),可以列出其遞歸式f(n)=f(n-1)+f(n-2),當(dāng)n=12時(shí),其值為1。

方法一:

#include <stdio.h>

void main()

{

int i;

int a[40];

a[0]=a[1]=1;

for (i=2;i<40;i++)

{

a[i]=a[i-1]+a[i-2];

}

for (i=0;i<40;i++)

{

printf("%d\t",a[i]);

}

}

方法二:(遞歸)注:效率不高

#include <stdio.h>

int f(int number);

void main()

{

int i,k;

for (i=1;i<=40;i++)

{

k=f(i);

printf("%d\t",k);

}

}

int f(int number)

{

if (number<=2)

{

return 1;

}

else return (f(number-1)+f(number-2));

}
素?cái)?shù):
#include"stdio.h"
void main()
{int n,i;
for(n=0;n<=500;n++)
{for(i=2;i<=n-1;i++)
if(n%i==0)break;
if(i>=n)printf("%d\t",n);}
}


最大公約數(shù):
#include<stdio.h>
void main()
{int m,n,r;
printf(" 請輸入兩個(gè)數(shù)");
scanf("%d,%d",&m,&n);
while(1)
{r=m%n;
if(r==0)break;
else {m=n;
n=r;}}
printf("%d",n);

}



最小公倍數(shù)
#include<stdio.h>
void main()
{int m,n,r,t;
int static s;
printf(" 請輸入兩個(gè)數(shù)");
scanf("%d,%d",&m,&n);
s=m*n;
while(1)
{r=m%n;
if(r==0)break;
else {m=n;
n=r;}}
t=s/n;
printf("%d",t);

}

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多