Thu gọn bài phân tích 1 số thành các số nguyên tố

đề bài: nhập vào 1 số nguyên dương n, phân tích n thành tích các số nguyên tố, in ra các số là số nguyên tố theo thứ tự tăng dần
vd: input 60
output 2 2 3 5
mình làm bài này dài lắm ạ, thu gọn bài này như nào ạ?

#include<stdio.h>
int main(){
    long long n,j,i,k=0;
    scanf("%lld", &n);
    while(n>1){
        for( i = 2;i <=n; ++i){
            if(n%i==0){
            	while(n%i==0){
            	    for(j=2;j<=i-1;j++){
            		    if(i%j==0)
            		    k++;
				    }
				    if(k==0){
					printf("%lld ",i);
				    }
				    k=0;
				    n=n/i;
				}
		    }
        }
    }
}

Thực ra chỉ cần thế này :point_down: là được rồi, k cần rườm rà làm gì. :slight_smile:

#include <stdio.h>

int main() {
	long long n = 0, i = 2;
	scanf("%lld", &n);
	while (i <= n) {
		if (n % i)
			i++;
		else {
			printf("%d ", i);
			n /= i;
		}
	}
	return 0;
}

Với lại bạn cũng đọc qua bài viết dưới để biết cách post source code như :point_up_2:.

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