# Overview - 為提升效率,在 IDE 中導入 AI Extension ,以優化工作流 # Cursor - 無官方版本 Extension ,只有第三方 Extension 可以使用 - 官方版本無法設定成 Extension,但可啟用 「無痛搬家」 功能, 自動轉移原先 vscode 設定,在不同視窗使用 vscode - 「無痛搬家」 僅單次轉移,無法和 vscode 同步 - 目前測試可在 Cursor 中使用其他 AI Extension 功能 - 優勢 - Cursor Tab - 本地端執行速度較快 - 劣勢 - 生成程式錯誤率略高 - 生成程式在執行時間、算法等方面較差 ## **CodeCursor** - vscode 中的 Extension ,版本已過時,無法使用 # Amazon Q - 優勢 - 生成程式錯誤率較低 - 生成程式較為完整 - 劣勢 - 僅限AWS相關服務 - 本地端執行速度較慢 # Cursor, Amazon Q 比較 - 使用相同指令 "幫我寫一隻程式,功能是使用者輸入一串數字字元,可以輸出該字串的公因式分解" 比較兩者運作時的差異 - Cursor - 對話 ![image](https://hackmd.io/_uploads/Hy6-s_IXle.png) ![image](https://hackmd.io/_uploads/SJlWmj_Umeg.png) ![image](https://hackmd.io/_uploads/Skb4iOIXel.png) - Cursor code :::spoiler ```javascript= const readline = require('readline'); // 建立 readline 介面 const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); // 質因數分解函數 function primeFactorization(number) { let factors = []; let divisor = 2; while (number > 1) { while (number % divisor === 0) { factors.push(divisor); number = number / divisor; } divisor++; } return factors; } // 格式化輸出結果 function formatFactorization(factors) { if (factors.length === 0) return "1"; let result = ""; let currentFactor = factors[0]; let count = 1; for (let i = 1; i <= factors.length; i++) { if (i === factors.length || factors[i] !== currentFactor) { if (count > 1) { result += `${currentFactor}^${count}`; } else { result += `${currentFactor}`; } if (i < factors.length) { result += " × "; currentFactor = factors[i]; count = 1; } } else { count++; } } return result; } // 詢問使用者輸入數字 rl.question('請輸入一個正整數:', (input) => { const number = parseInt(input); if (isNaN(number) || number <= 0) { console.log('請輸入有效的正整數!'); } else { const factors = primeFactorization(number); const result = formatFactorization(factors); console.log(`${number} 的質因數分解結果為:${result}`); } rl.close(); }); ``` ::: - Amazon Q - 對話 ![image](https://hackmd.io/_uploads/HkxLsdI7ll.png) ![image](https://hackmd.io/_uploads/B1zDj_Imel.png) - Amazon code :::spoiler ```javascript= // 質因數分解程式 const readline = require('readline'); // 建立 readline 介面 const rl = readline.createInterface({ input: process.stdin, output: process.stdout }); // 計算最大公因數 (GCD) function gcd(a, b) { while (b !== 0) { const temp = b; b = a % b; a = temp; } return a; } // 計算多個數字的最大公因數 function findGCD(numbers) { let result = numbers[0]; for (let i = 1; i < numbers.length; i++) { result = gcd(result, numbers[i]); } return result; } // 質因數分解 function primeFactorization(n) { const factors = []; // 處理2的因數 while (n % 2 === 0) { factors.push(2); n /= 2; } // 處理其他奇數因數 for (let i = 3; i <= Math.sqrt(n); i += 2) { while (n % i === 0) { factors.push(i); n /= i; } } // 如果n本身是質數 if (n > 2) { factors.push(n); } return factors; } // 詢問使用者輸入數字字串 rl.question('請輸入一串數字(用空格分隔):', (input) => { // 將輸入轉換為數字陣列 const numbers = input.trim().split(/\s+/).map(Number); if (numbers.length === 0 || numbers.some(isNaN)) { console.log('輸入無效,請輸入有效的數字。'); rl.close(); return; } // 計算最大公因數 const greatestCommonDivisor = findGCD(numbers); // 進行質因數分解 const primeFactors = primeFactorization(greatestCommonDivisor); // 顯示結果 console.log(`輸入的數字:${numbers.join(', ')}`); console.log(`最大公因數:${greatestCommonDivisor}`); if (greatestCommonDivisor === 1) { console.log('這些數字互質(最大公因數為1)'); } else { console.log(`最大公因數 ${greatestCommonDivisor} 的質因數分解:${primeFactors.join(' × ')} = ${greatestCommonDivisor}`); } // 關閉 readline 介面 rl.close(); }); ``` :::