Phân tích thừa số nguyên tố trong c

giúp em sửa code này với ạ, kết quả vẫn chưa là số nguyên tố

 // phan tich thua so nguyen to cua so n
#include<stdio.h>

int main() {
   int n,i;
	printf ("nhap so n: ");
	scanf ("%d",&n);
	printf ("cac thua so nto: ");
	for (i=2; i<=n; i++){
		if (n%i==0){
			printf ("\n%d",i);
			n=n/i;
		}
	}
   return 0;
}

chương trình ra kết quả:

nhap so n: 8
cac thua so nto:
2
4

Sai gì mới được?
Nói chung chung thì chắc cũng nhận được câu trả lời tương tự.

1 Like

kết quả:

nhap so n: 8
cac thua so nto:
2
4

thiếu dấu ngoặc cho hàm main

do copy thiếu thôi ạ, vx bị lỗi như trên

Ra vậy là đúng r(so vs kq của ct trên). Còn lỗi của bạn là lỗi logic, cần có thêm điều kiện i là số ng tố nữa ms đúng đk.

Bạn trình bày vấn đề như thế thì ai biết bạn hỏi cái gì mà giúp

tại sao cần điều kiện i là số nguyên tố nữa? trong lúc chia thì chia hết mấy số nguyên tố rồi còn hơp số đâu mà phải đặt điều kiện nữa ạ

Đây là bạn chỉ bỏ đi các ước của n thôi.

Tham khảo bài mk sửa nha.
link: https://ideone.com/0LYBee

1 Like

những số chính phương có 2 thừa số giống nhau sao chỉ in ra 1 lần thế ạ
vd:

nhap so n: 25
cac thua so nto:
5

Dễ hiểu mà. Vì nó chỉ chạy 1 lần từ 2 cho đến n. Nghĩ là mỗi số chỉ kiểm tra 1 lần, thì làm sao hiện ra nhiều lần được bạn.
Còn nếu muốn như ý của bạn thì phải như thế này
-> https://ideone.com/1MYccS

3 Likes

Bài của bạn mới chỉ là tìm các ước thôi.
Bạn có thể tham khảo bài này : https://ideone.com/cEjTNd

3 Likes

Đúng vậy :smiley: bạn phải chia cho đến khi dư thì mới qua số khác, như vậy mấy số bạn chia hết đều là số nguyên tố.

3 Likes

Đổi if (n%i==0) qua while là ok

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

int main ()
{ 
    long long n,i;
    cin>>n;
    for(i=2;i<=n;i++)
    {
            while (n%i==0)
            {
                cout<<i;
                n=n/i;
                if (n!=1) cout<<"*";
            }
        if(n==1) break;
    }
    return 0;
}

mk lm nộp bài vẫn bị quá thời gian 1 test :frowning:

i <= sqrt(n) là đủ.

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