Skip to content

Commit 512ddf7

Browse files
committed
feat: add solutions to lc problem: No.2507
No.2507.Smallest Value After Replacing With Sum of Prime Factors
1 parent 48b6690 commit 512ddf7

File tree

6 files changed

+213
-8
lines changed

6 files changed

+213
-8
lines changed

solution/2500-2599/2507.Smallest Value After Replacing With Sum of Prime Factors/README.md

Lines changed: 75 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,34 +48,105 @@
4848

4949
<!-- 这里可写通用的实现逻辑 -->
5050

51+
**方法一:暴力模拟**
52+
53+
根据题意,我们可以得到一个质因数分解的过程,即将一个数不断地分解为质因数,分解不能分解。过程中将每次分解的质因数相加,递归或者迭代地进行即可。
54+
55+
时间复杂度 $O(\sqrt{n})$。
56+
5157
<!-- tabs:start -->
5258

5359
### **Python3**
5460

5561
<!-- 这里可写当前语言的特殊实现逻辑 -->
5662

5763
```python
58-
64+
class Solution:
65+
def smallestValue(self, n: int) -> int:
66+
while 1:
67+
t, s, i = n, 0, 2
68+
while i <= n // i:
69+
while n % i == 0:
70+
n //= i
71+
s += i
72+
i += 1
73+
if n > 1:
74+
s += n
75+
if s == t:
76+
return t
77+
n = s
5978
```
6079

6180
### **Java**
6281

6382
<!-- 这里可写当前语言的特殊实现逻辑 -->
6483

6584
```java
66-
85+
class Solution {
86+
public int smallestValue(int n) {
87+
while (true) {
88+
int t = n, s = 0;
89+
for (int i = 2; i <= n / i; ++i) {
90+
while (n % i == 0) {
91+
s += i;
92+
n /= i;
93+
}
94+
}
95+
if (n > 1) {
96+
s += n;
97+
}
98+
if (s == t) {
99+
return s;
100+
}
101+
n = s;
102+
}
103+
}
104+
}
67105
```
68106

69107
### **C++**
70108

71109
```cpp
72-
110+
class Solution {
111+
public:
112+
int smallestValue(int n) {
113+
while (1) {
114+
int t = n, s = 0;
115+
for (int i = 2; i <= n / i; ++i) {
116+
while (n % i == 0) {
117+
s += i;
118+
n /= i;
119+
}
120+
}
121+
if (n > 1) s += n;
122+
if (s == t) return s;
123+
n = s;
124+
}
125+
}
126+
};
73127
```
74128
75129
### **Go**
76130
77131
```go
78-
132+
func smallestValue(n int) int {
133+
for {
134+
t, s := n, 0
135+
for i := 2; i <= n/i; i++ {
136+
for n%i == 0 {
137+
s += i
138+
n /= i
139+
}
140+
}
141+
if n > 1 {
142+
s += n
143+
}
144+
if s == t {
145+
return s
146+
}
147+
n = s
148+
}
149+
}
79150
```
80151

81152
### **...**

solution/2500-2599/2507.Smallest Value After Replacing With Sum of Prime Factors/README_EN.md

Lines changed: 69 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -50,25 +50,90 @@
5050
### **Python3**
5151

5252
```python
53-
53+
class Solution:
54+
def smallestValue(self, n: int) -> int:
55+
while 1:
56+
t, s, i = n, 0, 2
57+
while i <= n // i:
58+
while n % i == 0:
59+
n //= i
60+
s += i
61+
i += 1
62+
if n > 1:
63+
s += n
64+
if s == t:
65+
return t
66+
n = s
5467
```
5568

5669
### **Java**
5770

5871
```java
59-
72+
class Solution {
73+
public int smallestValue(int n) {
74+
while (true) {
75+
int t = n, s = 0;
76+
for (int i = 2; i <= n / i; ++i) {
77+
while (n % i == 0) {
78+
s += i;
79+
n /= i;
80+
}
81+
}
82+
if (n > 1) {
83+
s += n;
84+
}
85+
if (s == t) {
86+
return s;
87+
}
88+
n = s;
89+
}
90+
}
91+
}
6092
```
6193

6294
### **C++**
6395

6496
```cpp
65-
97+
class Solution {
98+
public:
99+
int smallestValue(int n) {
100+
while (1) {
101+
int t = n, s = 0;
102+
for (int i = 2; i <= n / i; ++i) {
103+
while (n % i == 0) {
104+
s += i;
105+
n /= i;
106+
}
107+
}
108+
if (n > 1) s += n;
109+
if (s == t) return s;
110+
n = s;
111+
}
112+
}
113+
};
66114
```
67115
68116
### **Go**
69117
70118
```go
71-
119+
func smallestValue(n int) int {
120+
for {
121+
t, s := n, 0
122+
for i := 2; i <= n/i; i++ {
123+
for n%i == 0 {
124+
s += i
125+
n /= i
126+
}
127+
}
128+
if n > 1 {
129+
s += n
130+
}
131+
if s == t {
132+
return s
133+
}
134+
n = s
135+
}
136+
}
72137
```
73138

74139
### **...**
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
class Solution {
2+
public:
3+
int smallestValue(int n) {
4+
while (1) {
5+
int t = n, s = 0;
6+
for (int i = 2; i <= n / i; ++i) {
7+
while (n % i == 0) {
8+
s += i;
9+
n /= i;
10+
}
11+
}
12+
if (n > 1) s += n;
13+
if (s == t) return s;
14+
n = s;
15+
}
16+
}
17+
};
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
func smallestValue(n int) int {
2+
for {
3+
t, s := n, 0
4+
for i := 2; i <= n/i; i++ {
5+
for n%i == 0 {
6+
s += i
7+
n /= i
8+
}
9+
}
10+
if n > 1 {
11+
s += n
12+
}
13+
if s == t {
14+
return s
15+
}
16+
n = s
17+
}
18+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
class Solution {
2+
public int smallestValue(int n) {
3+
while (true) {
4+
int t = n, s = 0;
5+
for (int i = 2; i <= n / i; ++i) {
6+
while (n % i == 0) {
7+
s += i;
8+
n /= i;
9+
}
10+
}
11+
if (n > 1) {
12+
s += n;
13+
}
14+
if (s == t) {
15+
return s;
16+
}
17+
n = s;
18+
}
19+
}
20+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
class Solution:
2+
def smallestValue(self, n: int) -> int:
3+
while 1:
4+
t, s, i = n, 0, 2
5+
while i <= n // i:
6+
while n % i == 0:
7+
n //= i
8+
s += i
9+
i += 1
10+
if n > 1:
11+
s += n
12+
if s == t:
13+
return t
14+
n = s

0 commit comments

Comments
 (0)