close

 

103程式設計(一) 作業6

 

第二題我最後*還是去不掉阿... 等電腦拿到再來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();
        }
    }
}

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 UM程式研究日誌 的頭像
    UM程式研究日誌

    UM程式研究日誌

    UM程式研究日誌 發表在 痞客邦 留言(0) 人氣()