# Brute Force# Basic Math

j362 - 因數

🔗 前往 ZeroJudge 原題

題目描述

題目要求輸出一個給定整數的所有因數。使用者可以選擇是否包含 1 和該數本身在輸出中,並計算因數的個數和總和。

解題思路

此題採用暴力法,從 1 或 2 開始迴圈到 n-1 (或 n),檢查每個數字是否能整除給定的數 n。如果可以整除,則將其輸出,並累加到因數的個數和總和中。根據使用者輸入的字串 "print" 或 "no",決定迴圈的起始值和是否輸出 n 本身。

複雜度分析

  • 時間複雜度: O(n)
  • 空間複雜度: O(1)

程式碼

#include <iostream>
using namespace std;
int n,ans,sum;
string s;
int main(){
	cin >> n >> s;
	if(s=="print"){
		for(int i=1;i<=n;++i){
			if(n%i==0)ans+=i,++sum,cout << i << "\n";
		}
		cout << n << "的因數的個數是" << sum << "," << n << "的因數的總和是" << ans;
	}
	else{
		for(int i=2;i<n;++i){
			if(n%i==0)ans+=i,++sum,cout << i << "\n";
		}
		cout << n << "的因數的個數是" << sum << "," << n << "的因數的總和是" << ans;
	}

}

Discussion