#27362: Java 0.1s 解題&詳解


s10914054@gm.cyut.edu.tw (Justin Tseng)

學校 : 不指定學校
編號 : 167107
來源 : [223.137.177.247]
最後登入時間 :
2022-08-30 17:42:14
a740. 质因数之和 -- 海豚原创 | From: [42.76.36.70] | 發表日期 : 2021-09-27 13:51

import java.io.*;

 

public class a740

{

public static void main(String[] args)throws IOException

{

int sum;

 

BufferedReader bf=new BufferedReader(new InputStreamReader(System.in)); //BufferedReader可以更快讀取

String input;

while((input=bf.readLine())!=null) //BufferedReader的EOF寫法

{

int number=Integer.parseInt(input);

 

sum=0;

while(number%2==0) //後面迴圈是從6開始 所以6以前的質因數先做計算

{

sum+=2;

number/=2;

}

while(number%3==0)

{

sum+=3;

number/=3;

}

while(number%5==0)

{

sum+=5;

number/=5;

}

for(int i=6;i<=Math.sqrt(number);i+=6) //質數只會在6n+5(6n+5又可以寫成6n-1)以及6n+1的地方出現 所以以6為循環跑

{

while(number%(i-1)==0) //6n-1的質數且是因數

{

sum+=i-1;

number/=i-1;

}

while(number%(i+1)==0) //6n+1的質數且是因數

{

sum+=i+1;

number/=i+1;

}

}

if(number!=1) //若都沒有質因數 就直接加自己

sum+=number;

 

System.out.print(sum+"\n");

}

}

}

 
ZeroJudge Forum