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(); } } }
全站熱搜