Tôi muốn xây dựng một iterator Python hiệu quả/máy phát điện mà sản lượng:hiệu quả tạo ra tất cả hợp số ít hơn N (với factorizations của họ)
- Tất cả các hợp số ít hơn N
- Cùng với chính của họ thừa số
tôi sẽ gọi nó là "composites_with_factors()"
Giả sử chúng ta đã có một li st của số nguyên tố nhỏ hơn N hoặc bộ tạo số nguyên tố có thể thực hiện tương tự.
Lưu ý rằng I:
- KHÔNG cần các con số để được mang lại theo số thứ tự
- KHÔNG quan tâm nếu 1 được mang lại ngay từ đầu hay không
- KHÔNG quan tâm nếu số nguyên tố được mang lại , quá
tôi con số này có thể được thực hiện với một máy phát điện đệ quy thông minh ...
Vì vậy, ví dụ, một cuộc gọi đến composites_with_factors (16) có thể mang lại:
# yields values in form of "composite_value, (factor_tuple)"
2, (2)
4, (2, 2)
8, (2, 2, 2)
6, (2, 3)
12, (2, 2, 3)
10, (2, 5)
14, (2, 7)
3, (3)
9, (3, 3)
15, (3, 5)
5, (5)
7, (7)
11, (11)
13, (13)
Như bạn có thể nhìn thấy từ thứ tự của đầu ra của tôi, tôi nhận thức của công tác này bằng cách bắt đầu với thủ nhỏ nhất trên các máy phát điện số nguyên tố có sẵn, và xuất tất cả sức mạnh của số nguyên tố đó nhỏ hơn N, sau đó thử lại thông qua các lũy thừa của số nguyên tố đó nhưng ở mỗi giai đoạn sẽ thấy nếu tôi có thể áp dụng các lũy thừa bổ sung (và vẫn nhỏ hơn N). Khi tất cả các kết hợp với THAT chính được thực hiện, hãy thả nó và lặp lại với số nguyên tố thấp nhất tiếp theo có sẵn trên trình tạo số nguyên tố.
Nỗ lực của tôi để làm điều này với "máy phát đệ quy" đã khiến tôi rất bối rối khi bật ra khỏi đệ quy với "hiệu suất" hoặc "tăng Dừng lại" hoặc "trả lại" hoặc đơn giản rơi ra khỏi chức năng.
Cảm ơn sự thông thái của bạn!
BỔ SUNG LƯU Ý:
tôi làm có một cách để làm điều này ngay bây giờ: Tôi đã viết một hàm đến yếu tố con số, vì vậy tôi có thể yếu tố chúng xuống số nguyên tố, và mang lại kết quả. Không vấn đề gì. Tôi giữ điều này một cách nhanh chóng bằng cách dựa vào bộ đệm "yếu tố chính thấp nhất của số N" ... cho N lên tới 10 triệu.
Tuy nhiên, một khi tôi đã thoát khỏi bộ nhớ cache, chúng tôi sẽ, nó sẽ biến thành sự thừa nhận "ngây thơ". (. Yuck)
Mục đích của bài này là:
- Tôi giả định rằng "tạo composit lớn từ các yếu tố của họ" sẽ nhanh hơn "Sacombank composit lớn" ... đặc biệt là kể từ khi tôi DON 'T quan tâm đến trật tự, và
- Làm cách nào để bạn có thể tạo một trình tạo Python "gọi đệ quy" và tạo ra một luồng các thứ được tạo ra?
đã bạn đã thực hiện gì nỗ lực hướng tới phương pháp này? Vui lòng cho chúng tôi thấy mã của bạn. – Makoto
Bạn đã tạo trình tạo số nguyên tố hay chỉ là trình tạo số lẻ để bắt đầu? Có thể nó sẽ dễ hiểu hơn nếu bạn làm một mảnh tại một thời điểm. Vui lòng cho chúng tôi biết mã bạn có cho đến thời điểm này. – gbulmer
@Makoto: Các nỗ lực của tôi đã thất bại hoàn toàn và sẽ KHÔNG sáng nếu tôi đăng các xác tàu. Ví dụ: trường hợp của tôi chỉ thu được một phần nhỏ của tất cả các số nguyên nhỏ hơn N. –