Làm thế nào để bạn tính một số trong javascript?

Tôi rất thích thử thách này đến nỗi tôi phải viết một bài ngắn về nó. Đây là từ trang web Dự án Euler

Thừa số nguyên tố lớn nhất

Các thừa số nguyên tố của 13195 là 5, 7, 13 và 29

Thừa số nguyên tố lớn nhất của số 600851475143 là bao nhiêu?

Ouch… đó là một con số khổng lồ. Nhưng chúng ta có thể đối phó với nó, đừng lo lắng. Hãy nhanh chóng xem số nguyên tố là gì

Số nguyên tố (hay số nguyên tố) là số tự nhiên lớn hơn 1 không có ước dương nào khác 1 và chính nó. e. g. 3, 5, 7, 9, v.v…

Cũng

Thừa số là những số chúng ta có thể nhân với nhau để được một số khác. Thí dụ. 2 và 3 là thừa số của 6, vì 2 * 3 = 6

Tuyệt vời. Cảm ơn Wikipedia. Với kiến ​​thức này, chúng tôi đã sẵn sàng để chuyển sang bước tiếp theo, đó là so sánh nhiều số và thừa số nguyên tố của chúng. Điều này sẽ giúp chúng tôi hiểu rõ hơn về cách giải quyết vấn đề của mình bằng giải pháp tốt nhất

Ví dụ 1 ~ 12

Điều đầu tiên, hãy chia số (12 trong ví dụ này) với số nguyên tố nhỏ nhất, đó là 2

12 / 2 = 6

Như chúng ta có thể thấy

var divisor = 2;
var number = 600851475143;
0 được chia đều cho 2, vì vậy chúng ta thực hiện lại bước này

var divisor = 2;
var number = 600851475143;
2

Lên… rào cản. Mỗi khi gặp trở ngại, chúng tôi tăng

var divisor = 2;
var number = 600851475143;
3 lên
var divisor = 2;
var number = 600851475143;
4

var divisor = 2;
var number = 600851475143;
5

Sau đó, chúng tôi tiếp tục

Số / số chia

var divisor = 2;
var number = 600851475143;
6

Hoàn hảo. Chúng tôi đã đạt được

var divisor = 2;
var number = 600851475143;
4 đó là mục tiêu của chúng tôi. Điều đó có nghĩa là các thừa số nguyên tố của 12 là.
var divisor = 2;
var number = 600851475143;
9, trong đó
var divisor = 2;
var number = 600851475143;
while(number > 1){}
0 là thừa số nguyên tố lớn nhất của chúng ta

Ví dụ 2 ~ 20

Lặp lại các bước tương tự như trong ví dụ đầu tiên của chúng tôi

var divisor = 2;
var number = 600851475143;
while(number > 1){}
1

var divisor = 2;
var number = 600851475143;
while(number > 1){}
2

var divisor = 2;
var number = 600851475143;
while(number > 1){}
3 không còn chia hết cho 2 vì vậy chúng tôi thêm
var divisor = 2;
var number = 600851475143;
4 vào nó và chúng tôi nhận được
var divisor = 2;
var number = 600851475143;
while(number > 1){}
0. Nhưng một lần nữa
var divisor = 2;
var number = 600851475143;
while(number > 1){}
3 nó không chia hết cho
var divisor = 2;
var number = 600851475143;
while(number > 1){}
0… cũng không phải
var divisor = 2;
var number = 600851475143;
while(number > 1){}
9… nhưng nó chia hết cho
var divisor = 2;
var number = 600851475143;
while(number > 1){}
3

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
}
}
1

Tuyệt vời.

var divisor = 2;
var number = 600851475143;
4 lần nữa. Các thừa số nguyên tố của
var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
}
}
3 là.
var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
}
}
4, trong đó
var divisor = 2;
var number = 600851475143;
while(number > 1){}
3 là thừa số nguyên tố lớn nhất của chúng ta

Chúng tôi đang bắt đầu thấy một mô hình ở đây. Nhưng hãy tiếp tục với một ví dụ nữa

Ví dụ 3 ~ 180

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
}
}
6

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
}
}
7

Rào cản…Thêm tối đa __8_______0

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
}
}
9

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
}
}
0

Roadblock một lần nữa…Cộng lên tới

var divisor = 2;
var number = 600851475143;
while(number > 1){}
9 -> Roadblock… Cộng lên tới
var divisor = 2;
var number = 600851475143;
while(number > 1){}
3

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
}
}
1

Gotcha. . D Các thừa số nguyên tố của

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
}
}
4 là.
var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
}
}
5, trong đó
var divisor = 2;
var number = 600851475143;
while(number > 1){}
3 lại là thừa số nguyên tố lớn nhất của chúng ta

Đây là thuật toán chúng tôi sẽ triển khai trong JavaScript. Miễn là

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
}
}
7 của chúng tôi chia hết cho
var divisor = 2;
var number = 600851475143;
3 của chúng tôi, chúng tôi chia
var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
}
}
7 cho
var divisor = 2;
var number = 600851475143;
3, khi nó không còn chia hết nữa, chúng tôi sẽ tăng
var divisor = 2;
var number = 600851475143;
3 lên 1. Dễ dàng phải không?

giải pháp JavaScript

Như chúng tôi đã nói ở trên, chúng tôi sẽ cần một

var divisor = 2;
var number = 600851475143;
3 sẽ có giá trị ban đầu. 2

var divisor = 2; 

Ngoài ra, hãy lưu trữ

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
}
}
7 lớn đó vào một biến

var divisor = 2;
var number = 600851475143;

Tốt. Bây giờ cho vòng lặp while. Miễn là

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
}
}
7 lớn hơn 1…

________số 8_______

Nếu

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
}
}
7 chia hết cho
var divisor = 2;
var number = 600851475143;
3

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
}
}

Chia

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
}
}
7 cho
var divisor = 2;
var number = 600851475143;
3

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
}
}

Ghi chú.

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
} else {
divisor++;
}
}
console.log(divisor); // the largest prime factor of 600851475143
0 cũng giống như nói.
var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
} else {
divisor++;
}
}
console.log(divisor); // the largest prime factor of 600851475143
1

Khác tăng

var divisor = 2;
var number = 600851475143;
3

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
} else {
divisor++;
}
}

Xin chúc mừng. Khi vòng lặp while kết thúc, ước số sẽ bằng thừa số nguyên tố lớn nhất của

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
} else {
divisor++;
}
}
console.log(divisor); // the largest prime factor of 600851475143
3

var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
} else {
divisor++;
}
}
console.log(divisor); // the largest prime factor of 600851475143

tôi sẽ không cho bạn câu trả lời. . D Bạn có thể chạy mã và viết vào phần nhận xét bên dưới câu trả lời đúng. ;)

Phần kết luận

Thử thách này chắc chắn rất thú vị đối với cá nhân tôi. Tôi đã học được rất nhiều điều chỉ bằng cách cố gắng giải nó theo một cách khác với cách tôi nghĩ ban đầu. . D Tôi muốn nói rằng nó đáng để dành thời gian nghiên cứu một giải pháp tốt hơn cho vấn đề

Một lưu ý nhỏ. chúng ta có thể thấy rằng ________ 61 _______ là số nguyên tố chẵn duy nhất. Điều đó có nghĩa là khi số chia trở thành

var divisor = 2;
var number = 600851475143;
while(number > 1){}
0, chúng ta có thể tăng nó lên một lượng là 2 thay vì
var divisor = 2;
var number = 600851475143;
4 như.
var divisor = 2;
var number = 600851475143;
while(number > 1){
if(number % divisor === 0){
number /= divisor;
} else {
divisor++;
}
}
console.log(divisor); // the largest prime factor of 600851475143
8…
Ngoài ra, có một điều kiện bổ sung mà chúng ta có thể có trong vòng lặp while, để thuật toán sẽ hiệu quả hơn nhiều đối với các số thậm chí còn lớn hơn. Nhưng tôi sẽ cho bạn biết đó là gì. ^_^

Tôi hy vọng bạn thích thử thách này. Nếu bạn đã làm như vậy, tôi thực sự đánh giá cao việc nhấp vào nút Đề xuất. 💚

Làm cách nào để sử dụng giai thừa trong JavaScript?

Phương pháp tiếp cận .
hàm giai thừa(n){
hãy trả lời = 1;
nếu (n == 0. n == 1){
trả lời;
khác nếu (n > 1){
for(var i = n; i >= 1; i--){
trả lời = trả lời * tôi;

Làm cách nào để lấy thừa số nguyên tố của một số trong JavaScript?

function prime_factors(num) { function is_prime(num) { for (let i = 2; i <= Math. sqrt(số);