Nhờ xem giúp code Prime factor c++

#include <bits/stdc++.h >
using namespace std;


int main(){
    freopen("PRIMEFACTORS.inp","r",stdin) ;
    freopen("PRIMEFACTORS.out ","w ",stdout);

    long long  n;

    cin >> n;
    int dem;

    for(int i = 2; i <= n ; i++){
        dem = 0;
        while(n % i == 0){
            ++dem;
            n /= i;
        }
        if(dem){
            cout << i;
            if(dem > 0 ) cout << " " << dem;
            if(n > i){
                cout << " ";
            }
        }
    }

}

Phân tích thừa số nguyên tố : PRIMEFACTORS

Phân tích số tự nhiên N thành tích các thừa số nguyên tố.

Ví dụ 100 = 2^2 x 5^2

Input:

Dòng đầu chứa số nguyên T là số bộ dữ liệu cần tìm. 1 ≤ T≤ 100

T dòng tiếp theo, mỗi dòng chứa số nguyên n (1≤ N ≤ 105).

Output:

In ra T dòng, mỗi dòng là một dãy gồm nhiều cặp số liên tiếp trong đó số đứng trước là cơ số, số sau là số mũ.

PRIMEFACTORS.INP PRIMEFACTORS.OUT
2
100
35
2 2 5 2
5 1 7 1

Code em sai chỗ nào ạ.Em mới học cơ bản c++ nên chưa học về mảng 2 chiều ạ

Thực ra do tích 10 số nguyên tố đầu tiên > 6*10^9 nên chỉ cần hai mảng 9 ô là lưu được, rồi in ra sau.

4 Likes

Bác chỉ em cái chỗ đó đc ko ạ tại em mới học nên còn hơi yếu phần đó ạ

À, thực ra lỗi là do bạn ko để ý đến cấu trúc input gồm nhiều số. Tức là phải có 1 vòng lặp ngoài nữa.

2 Likes

Là phần cin vào phải thêm biến phải ko ạ

Tức là code bạn hiện tại chỉ nhận đúng 1 số thôi. Đọc lại đề thì số đầu tiên chỉ là số số tiếp theo để xử lí.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?