[ C# ] 程式設計實習 06

大一資管程式設計C#練習之紀錄,如有任何錯誤請見諒,當時手法純熟度不足

點我查看 C# 程式設計練習總覽

第二題我最後*還是去不掉阿... 等電腦拿到再來Debug不過 除了*其他沒問題

因為對C#的字串不熟 = =不聽我的話 不能str+= 

 

11. 請設計一個程式:由鍵盤輸入二個正整數,印出這二個整數的最大公因數與最小公倍數。

【解法一】

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {


            //1.	請設計一個程式:由鍵盤輸入二個正整數,印出這二個整數的最大公因數與最小公倍數。


            int num1, num2;
            Console.WriteLine("Please enter two interger");
            Console.Write("First :");
            num1 = int.Parse(Console.ReadLine());
            Console.Write("Second :");
            num2 = int.Parse(Console.ReadLine());


            //找最大公倍
            //判斷那個大
            int bignum;
            if(num1>num2)
            {
                bignum = num1;
            }
            else
            {
                bignum = num2;
            }


            for (int i = bignum; ;i-- )
            {
                if(num1%i==0&&num2%i==0)
                {
                    Console.WriteLine("最大公因數{0}", i);
                    Console.WriteLine("最小公倍數{0}",(num1*num2)/i);
                    break;

                }

            }
            Console.ReadLine();

        }
    }
}

 

 

【解法二】使用遞迴

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace A3261576_林郁翔作業1
{
    class Program
    {

        static int gcd(int i, int j)//取得最大公因數
        {
            if (i % j == 0)
            {
                return j;
            }
            else
            {
                return gcd(i, i % j);
            }

        }

       static int lcm(int a, int b) //取得最小公倍數
       {
           return b / gcd(a, b) * a;
       }

        static void Main(string[] args)
        {

            Console.Write("請輸入兩個整數");
            int num1 = int.Parse(Console.ReadLine());
            int num2 = int.Parse(Console.ReadLine());
            Console.Write("最大公因數為{0}", gcd(num1, num2));
            Console.Write("最小公倍數為{0}", lcm(num1, num2));
            Console.ReadLine();
        }


    }
}

 
2. 請設計一個程式:由鍵盤輸入一個正整數,印出其質因數的連乘積,由小到大依序排列之,例如12=2*2*3。

 

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication2
{

    class Program
    {


        static bool isPrime(int num)//判斷是不是質數
        {

            int count = 0;
            //原理因數只有1跟他自己
            for (int i = 1; i <= num; i++)
            {
                if (num % i == 0)
                {
                    count++;

                }
            }

            if (count == 2)
            {
                return true;
            }
            else
            {
                return false;
            }

        }

        //除質數使用
        static  int moduse(int num)
        {
            for (int i = 1; ; i++)
            {
                if (isPrime(i))
                {
                    if (num % i == 0)
                    {
                        return i;
                    }
                }
            }
        }



        static void Main(string[] args)
        {

            Console.WriteLine("Please enter a interger");

            int num = int.Parse(Console.ReadLine());

            int temp = num;

            Console.Write("{0}=",temp);

            while(num>0)
            {
                Console.Write("{0}*", moduse(num));
                num= num / moduse(num);

            }


            Console.ReadLine();
        }


    }
}

3. 請設計一個程式:由鍵盤輸入一個界限值N,計算1+2+5+10+17+…+m=? m是小於等於N的最大值。 (提示:相鄰兩個數字的間隔分別是1, 3, 5, 7, 9….)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleApplication1
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.Write("請輸入一數:");
            int num = int.Parse(Console.ReadLine());
            int sum = 0;
            int i = 1, j = 1;

            while(i<=num)
            {
                //Console.Write("{0}",i);
                sum += i;
                i = i + j;
                j = j + 2;
            }

             Console.WriteLine(sum);
             Console.ReadLine();
        }
    }
}