Skip to content

Commit 4ce392f

Browse files
committed
feat: add solutions to lc problem: No.0507
No.0507.Perfect Number
1 parent 56ab781 commit 4ce392f

File tree

6 files changed

+194
-8
lines changed

6 files changed

+194
-8
lines changed

solution/0500-0599/0507.Perfect Number/README.md

+71-1
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,85 @@
6262
<!-- 这里可写当前语言的特殊实现逻辑 -->
6363

6464
```python
65-
65+
class Solution:
66+
def checkPerfectNumber(self, num: int) -> bool:
67+
if num == 1:
68+
return False
69+
s, i = 1, 2
70+
while i * i <= num:
71+
if num % i == 0:
72+
s += i
73+
if i != num // i:
74+
s += num // i
75+
i += 1
76+
return s == num
6677
```
6778

6879
### **Java**
6980

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

7283
```java
84+
class Solution {
85+
86+
public boolean checkPerfectNumber(int num) {
87+
if (num == 1) {
88+
return false;
89+
}
90+
int s = 1;
91+
for (int i = 2; i * i <= num; ++i) {
92+
if (num % i == 0) {
93+
s += i;
94+
if (i != num / i) {
95+
s += num / i;
96+
}
97+
}
98+
}
99+
return s == num;
100+
}
101+
}
102+
103+
```
104+
105+
### **C++**
106+
107+
```cpp
108+
class Solution {
109+
public:
110+
bool checkPerfectNumber(int num) {
111+
if (num == 1) return false;
112+
int s = 1;
113+
for (int i = 2; i * i <= num; ++i)
114+
{
115+
if (num % i == 0)
116+
{
117+
s += i;
118+
if (i != num / i) s += num / i;
119+
}
120+
}
121+
return s == num;
122+
}
123+
};
124+
```
73125
126+
### **Go**
127+
128+
```go
129+
func checkPerfectNumber(num int) bool {
130+
if num == 1 {
131+
return false
132+
}
133+
s := 1
134+
for i := 2; i*i <= num; i++ {
135+
if num%i == 0 {
136+
s += i
137+
if i != num/i {
138+
s += num / i
139+
}
140+
}
141+
}
142+
return s == num
143+
}
74144
```
75145

76146
### **...**

solution/0500-0599/0507.Perfect Number/README_EN.md

+71-1
Original file line numberDiff line numberDiff line change
@@ -60,13 +60,83 @@
6060
### **Python3**
6161

6262
```python
63-
63+
class Solution:
64+
def checkPerfectNumber(self, num: int) -> bool:
65+
if num == 1:
66+
return False
67+
s, i = 1, 2
68+
while i * i <= num:
69+
if num % i == 0:
70+
s += i
71+
if i != num // i:
72+
s += num // i
73+
i += 1
74+
return s == num
6475
```
6576

6677
### **Java**
6778

6879
```java
80+
class Solution {
81+
82+
public boolean checkPerfectNumber(int num) {
83+
if (num == 1) {
84+
return false;
85+
}
86+
int s = 1;
87+
for (int i = 2; i * i <= num; ++i) {
88+
if (num % i == 0) {
89+
s += i;
90+
if (i != num / i) {
91+
s += num / i;
92+
}
93+
}
94+
}
95+
return s == num;
96+
}
97+
}
98+
99+
```
100+
101+
### **C++**
102+
103+
```cpp
104+
class Solution {
105+
public:
106+
bool checkPerfectNumber(int num) {
107+
if (num == 1) return false;
108+
int s = 1;
109+
for (int i = 2; i * i <= num; ++i)
110+
{
111+
if (num % i == 0)
112+
{
113+
s += i;
114+
if (i != num / i) s += num / i;
115+
}
116+
}
117+
return s == num;
118+
}
119+
};
120+
```
69121
122+
### **Go**
123+
124+
```go
125+
func checkPerfectNumber(num int) bool {
126+
if num == 1 {
127+
return false
128+
}
129+
s := 1
130+
for i := 2; i*i <= num; i++ {
131+
if num%i == 0 {
132+
s += i
133+
if i != num/i {
134+
s += num / i
135+
}
136+
}
137+
}
138+
return s == num
139+
}
70140
```
71141

72142
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
class Solution {
2+
public:
3+
bool checkPerfectNumber(int num) {
4+
if (num == 1) return false;
5+
int s = 1;
6+
for (int i = 2; i * i <= num; ++i)
7+
{
8+
if (num % i == 0)
9+
{
10+
s += i;
11+
if (i != num / i) s += num / i;
12+
}
13+
}
14+
return s == num;
15+
}
16+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
func checkPerfectNumber(num int) bool {
2+
if num == 1 {
3+
return false
4+
}
5+
s := 1
6+
for i := 2; i*i <= num; i++ {
7+
if num%i == 0 {
8+
s += i
9+
if i != num/i {
10+
s += num / i
11+
}
12+
}
13+
}
14+
return s == num
15+
}
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
1-
public class Solution {
1+
class Solution {
22
public boolean checkPerfectNumber(int num) {
3-
if (num == 0 || num == 1) {
3+
if (num == 1) {
44
return false;
55
}
6-
int sum = 1;
7-
for (int i = 2; i <= Math.sqrt(num); i++) {
6+
int s = 1;
7+
for (int i = 2; i * i <= num; ++i) {
88
if (num % i == 0) {
9-
sum = sum + i + num / i;
9+
s += i;
10+
if (i != num / i) {
11+
s += num / i;
12+
}
1013
}
1114
}
12-
return num == sum;
15+
return s == num;
1316
}
1417
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution:
2+
def checkPerfectNumber(self, num: int) -> bool:
3+
if num == 1:
4+
return False
5+
s, i = 1, 2
6+
while i * i <= num:
7+
if num % i == 0:
8+
s += i
9+
if i != num // i:
10+
s += num // i
11+
i += 1
12+
return s == num

0 commit comments

Comments
 (0)