1. 程式人生 > >linuxC學習第八天

linuxC學習第八天

今天由於需要解決一些生活和學習上的瑣事,只進行了3個簡單程式的理解學習

一、計算最大約數

這個程式比較簡單隻需要對這個數從大到小每一個數進行判斷是否能除盡,取出最大的數就可以了,注意一些數可能超出int的範圍,可以用long定義

#include <stdio.h>

int main()
{
	long a;
	int i;
	
	printf("請輸入數字\n");
	scanf("%ld",&a);
	
	for(i=999;i>=100;i--)
	{
		if(a%i==0)
		{
			printf("在%ld中最大的三位數是:%d\n",a,i);
			break;
		}
	}
	
	return 0;
}

二、求13*13次方的最後3個尾數

這也是一個簡單的程式只有將結果對1000取餘數就可以了

#include <stdio.h>

int main()
{
	int i,x,y,last=1;
	printf("INPUT X and Y\n");
	scanf("%d%d",&x,&y);

	for(i=0;i<y;i++)
	{
		last=(last * x)%1000;
	}
	
	printf("THE last 3 digis of %d^%d = %d\n",x,y,last);
	
	return 0;
}

三、求階乘尾數0的個數

1、10!末尾0的個數

#include <stdio.h>

int main()
{
    int a,c,count=0;

    for(a=5;a<11;a+=5)
    {
        count++;
    }
    
    c=1*2*3*4*5*6*7*8*9*10;
    
    printf("%d,%d\n",count,c);

    return 0;
}

2、100!末尾0的個數

#include <stdio.h>

int main()
{
    int a,count=0;
    for(a=5;a<101;a+=5)
    {
        count++;

        if(!(a%25))
        {
            count++;
        }
    }
    
    printf("The number of 0 in the end of 100! is:%d\n",count);
    
    return 0;
}

3、1000!末尾0的個數

#include <stdio.h>

int main()
{
    int a,count;
    for(a=5;a<1001;a+=5)
    {
        count++;

        if(!(a%25))
        {
            count++;

            if(!(a%125))
            {
                count++;

                if(!(a%625))
                {
                    count++;
                }
            }
        }
    }
   
    printf("The number of 0 in the end of 1000! is:%d\n",count);
            
    return 0;
}

從中可以看出只有計算5、5^2和 5^3的…的值就可以算出末尾0的個數了

4、計算N!末尾0的個數

#include <stdio.h>

int main()
{
    int a,b,N,count=0;
	
	printf("要計算階乘的數:");
	scanf("%d",&N);
	
    for(a=1;a<N+1;a++)
    {	
		b=a;										//用b來儲存a的值,判斷b的值與5,25,125....關係
		while(b%5==0)
        {
			count++;
			b/=5;		
		}
    }
   
    printf("The number of 0 in the end of N! is:%d\n",count);
            
    return 0;
}