【数学】C058_LQ_价值之和(试除求质 + 细心)

一、Problem

在这里插入图片描述

3257

二、Solution

方法一:枚举

细心啊:

  • 第一:要求的是质因数。
  • 第二:这些数必的乘积必须等于 n。

不留心,写下这第一版代码,但是不是求质因数的个数啊…

import java.util.*;
import java.math.*;
import java.io.*;
public class Main{
	static class Solution {
		boolean isPrime(int n) {
			for (int i = 2; i < n; i++) {
				if (n % i == 0)
					return false;
			}
			return true;
		}
		int dfs(int n) {
			int sum = 0;
			Set<Integer> set = new HashSet<>();
			for (int i = 2; i < n; i++) {
				if (n % i == 0 && isPrime(i)) 
				    set.add(i);
			}
			return set.size();
		}
		boolean check(int n) {
			String s = n + "";
			return s.indexOf("5") == -1;
		}
		void init() {
			Scanner sc = new Scanner(new BufferedInputStream(System.in));
			BufferedWriter w = new BufferedWriter(new OutputStreamWriter(System.out));
			
			int val = 0;
			for (int i = 1; i <= 2020; i++) {
				if (check(i))
					val += dfs(i);
			}
			System.out.println(val);
		}
	}
    public static void main(String[] args) throws IOException {  
        Solution s = new Solution();
		s.init();
		
    }
}

修正后…

import java.util.*;
import java.math.*;
import java.io.*;
public class Main{
	static class Solution {
		boolean isPrime(int n) {
			for (int i = 2; i <= n/i; i++) {
				if (n % i == 0)
					return false;
			} return true;
		}
		int dfs(int n) {
			Set<Integer> set = new HashSet<>();
			int i = 2;
			while (n != 1) {
			    if (n % i == 0 && isPrime(i)) {
		            set.add(i);
		            n /= i;
			    } else
			        i++;
			} return set.size();
		}
		boolean check(int n) {
			String s = n + "";
			return s.indexOf("5") == -1;
		}
		void init() {
			Scanner sc = new Scanner(new BufferedInputStream(System.in));
			BufferedWriter w = new BufferedWriter(new OutputStreamWriter(System.out));
			int val = 0;
			for (int i = 1; i <= 2020; i++) {
				if (check(i))
					val += dfs(i);
			} System.out.println(val);
		}
	}
    public static void main(String[] args) throws IOException {  
        Solution s = new Solution();
		s.init();
    }
}

复杂度分析

  • 时间复杂度: O ( . . . ) O(...)
  • 空间复杂度: O ( . . . ) O(...)
原创文章 787 获赞 314 访问量 5万+

猜你喜欢

转载自blog.csdn.net/qq_43539599/article/details/105826475