0.Phân tích ra thừa số nguyên tố
Submit solution
Points:
1 (partial)
Time limit:
1.0s
Memory limit:
98M
Problem type
Allowed languages
Ada, Assembly, Awk, C, C++, C11, CLANG, CLANGX, Classical, COBOL, Coffee, CSC, D lang, DART, F95, FORTH, Fortrn, GAS32, GO, Haskell, Itercal, Java, kotlin, LEAN, LISP, LUA, MONOVB, Nasm, OCAML, Pascal, Perl, php, PIKE, prolog, Pypy, Python, Ruby 2, RUST, Scala, SCM, SED, SWIFT, TCL, TUR, V8JS, VB, ZIG
Cho số nguyên dương n (2<=n<=10^9) , hãy phân tích n ra thừa số nguyên tố.
Dữ liệu:
Một dòng duy nhất chứa số n.
Kết quả:
Mỗi dòng ghi một thừa số nguyên tố và số mũ tương ứng cách nhau bởi dấu cách.
Các thừa số nguyên tố in ra theo thứ tự tăng dần.
Ví dụ 1:
Input
100
Output
2 2
5 2
Ví dụ 1:
Input
144
Output
2 4
3 2
Comments
Mình đã sửa lại code cho bạn comment bên dưới. thuật toán sàng erotos không cần thiết trong việc giải bài tập đơn giản.
em cảm ơn anh ạ
bài này cách làm hay nhất là kết hợp giữa thuật toán sàng kratothenes và chia dần theo số nguyên tố đã tìm được. mình sẽ update thêm code giải đáp hiệu quả hơn sau.
Cho e hỏi em bị sai ở đâu vậy ạ ?
include<stdio.h>
int main() { int n; int dem; scanf("%ld", &n); for (int i=2;i<=n;i++){ int dem =0; while(n%i==0){ dem++; n/=i; } if(dem){ if(dem>1) printf("\n%d %d",i,dem); else printf(" \n%d ", i); if(n>1){ printf(""); } }
}
}
kích thước của biến chạy từ mức 1 đến 10 mũ 9 nên bị overflow biến int, bạn phải dùng biến to hơn. nếu thay biến to hơn vào chg trình của bạn thì vẫn sẽ bị TLE time limit exceeded vì thuật toán của bạn độ phức tạp chạy quá dài. bạn thử thực hiện tách 92934234 về thừa số nguyên tố bằng thuật toán của bạn,giải tay là thấy ngay độ dài của thuật toán.
mình cùng đã viết lời giải thích chi tiết trong bài toán sàng eratosthesnes, bạn có thể tự tham khảo trước
{Tin nhắn đã bị xóa}
bạn để toàn bộ code vào trong 3 dấu ```
bộ test bài này có lỗi ko ạ, huhu???
Không lỗi đâu bạn ơi,tại code bạn mới chỉ phân tích được thừa số nguyên tố 2,3,5,7 thôi
mai fen cho mình tham khảo code đc ko?