30/09/2018, 16:01

Nhập N>2.Viết N dưới dạng tích các thừa số nguyên tố

Nhập N>2.Viết N dưới dạng tích các thừa số nguyên tố.VD:100=2^2*5^2.

Trần Trí Dũng viết 18:04 ngày 30/09/2018

cần thuật toán hay là code C

BaoLe viết 18:16 ngày 30/09/2018

Mình cần code C và cả thuật toán .

Trần Trí Dũng viết 18:10 ngày 30/09/2018

ukm : thuật toán thì đơn giản thôi …
trước tiên muốn phân tích số này thì cần tìm các số nguyên tố là ước của nó bằng cách sau :
1/ bạn sẽ chạy vòng lặp từ i từ 2 đến n .
2/ nếu mà i là số nguyên tố ( tức là bạn sẽ dùng hàm kiểm tra xem i có phải là snt hay ko ) nếu phải thì bạn sẽ lấy n/i nếu mà n chia hết cho i thì ghi nhận i vào 1 mảng … sau đó ta tiếp tục chia đến khi nào chia mà dư thì ta dừng lại tăng i lên 1 đơn vị …
3/ thực hiện vòng lặp đó đến khi nào i = n thì stop … sau đó in kết quả ra màn hình từ cái mảng đã lưu kết quả

Trần Trí Dũng viết 18:16 ngày 30/09/2018

quên mất là bạn phải cập nhật lại n nhá … sau mỗi lần chia n = n/i đó

BaoLe viết 18:09 ngày 30/09/2018

Nhưng mình học ở trường,giảng viên yêu cầu không dùng mảng.

Trần Trí Dũng viết 18:17 ngày 30/09/2018

ukm vay ban dung stack … cho chut minh se code cho cau

Trần Trí Dũng viết 18:09 ngày 30/09/2018
#include <iostream>
#include <stack>
#include <algorithm>
#define For(i,a,b) for (int i = a;i<b;i++)
using namespace std;
struct number
{
	int so_bi_chia;
	int so_nguyen_to;
};
bool kiemtra(int k)
{
	if(k == 2) return true;
	else
		For(i,2,k)
	{
		if (k % i == 0) return false;
	}
	return true;
}
int main()
{
	int n;
	cout << "nhap n = ";
	cin >> n;
	cout << endl;
	number test;
	stack <number> str;
	test.so_bi_chia = n;
	test.so_nguyen_to = 0;
	str.push(test);
	int i = 2;
	For(i,2,n+1)
	{
		if (kiemtra(i) == true)
		{
			while (test.so_bi_chia != 1)
			{
				if (test.so_bi_chia % i == 0)
				{
					test.so_bi_chia = test.so_bi_chia / i;
					test.so_nguyen_to = i;
					str.push(test);
				}
				else break;
			}
		}
	}
	while (str.size() != 2)
	{
		cout << str.top().so_nguyen_to << "*";
		str.pop();
	}
	cout << str.top().so_nguyen_to << endl;
	system("pause");
	return 0;
}
buithaiminh viết 18:17 ngày 30/09/2018

Bạn @BatdangthucD xem bài viết này rồi sửa lại code của bạn cho rõ ràng nhé Cách post Code dùng Markdown trong Category Programming

Trần Trí Dũng viết 18:13 ngày 30/09/2018

quen mat copi ca 2 doan code … cai topic nay bất tiện kinh … chả biết sửa chỗ nào … hài thà lên fb còn tiện hơn

buithaiminh viết 18:05 ngày 30/09/2018

Bạn bấm vào nút hình cây viết để sửa bài của bạn. Mình sửa cho bạn luôn rồi đó. Bạn bấm vào Edit để xem mình đã sửa những gì để lần sau post code lên được rõ ràng hơn. @BatdangthucD

Trần Trí Dũng viết 18:13 ngày 30/09/2018

tai sao lại ko có trình tự động dàn đoạn code và sắp xếp như trong các trình biên dịch vậy … bất tiện quá

Trần Trí Dũng viết 18:14 ngày 30/09/2018

sao ad ko việt hóa tất cả topic đi … chứ cứ có tiếng anh vào khó dùng …

BaoLe viết 18:02 ngày 30/09/2018

Thank you ve doan code cua ban.

Nguyễn Minh Dũng viết 18:06 ngày 30/09/2018

sao ad ko việt hóa tất cả topic đi … chứ cứ có tiếng anh vào khó dùng …

Vì chúng ta là lập trình viên. Ngôn ngữ quốc tế cho lập trình viên là tiếng Anh, không phải tiếng Việt. Không phải mình sính ngoại đâu, mà chúng ta bắt buộc phải sử dụng tiếng Anh cho quen đi. Nếu bạn không thể sử dụng tiếng Anh thì con đường lập trình phía trước chông gai lắm đấy.

tai sao lại ko có trình tự động dàn đoạn code và sắp xếp như trong các trình biên dịch vậy … bất tiện quá

Vì forum là diễn đàn thảo luận, không phải là trình biên dịch. Khi bạn viết một bài thơ vào trong trình biên dịch thì nó cũng báo lỗi giống như khi bạn viết code vào forum , forum không hiểu được.

Nhưng cũng có cách khác, đó là dùng markdown để báo cho forum biết đây là code, hãy hiển thị màu lên.

Làm sao để có thể hiển thị syntax highlighting bằng markdown? Các bạn phải đánh dấu ``` như ví dụ dưới đây Chú ý, dấu ``` được tạo ra bởi nút nằm bên trái số 1 trên bàn phím, nút này sẽ là ~ khi bấm giữ Shift Ví dụ cho C Nội dung: ``` void main() { } ``` Và đừng quên ``` ở cuối Kết quả void main() { } Ví dụ cho Pascal Nội dung: ``` Program HelloWorld; Begin WriteLn('Hello world!') {no ";" is required after the last statement of a block - adding one adds a "null stateme…

quen mat copi ca 2 doan code … cai topic nay bất tiện kinh … chả biết sửa chỗ nào … hài thà lên fb còn tiện hơn

Nếu bạn chịu để ý một chút, bạn sẽ thấy cách sửa bài viết, cách hiển thị màu cho code. Lịch sử thay đổi của một bài viết. Nhiều tính năng mà FB không có.

Có ba điểm mà Đạt thấy bạn nên thay đổi

  • Để ý vào nhiều chi tiết. Những lập trình viên giỏi họ thấy những điều người bình thường không thấy.
  • Giảm bớt dùng Facebook. Facebook giết thời gian của bạn nhiều hơn đem lại cho bạn kiến thức.
  • Mình thấy bạn chịu khó học lập trình, nhưng bạn chưa chịu khó đọc hướng dẫn http://daynhauhoc.com/c/meta
Lê Đình Huy viết 18:05 ngày 30/09/2018

Diễn đàn này là 1 diễn đàn kiểu mới. Có rất nhiều tính năng, tiện hơn với diễn đàn cũ , cái " bất tiện " ở đây là việc không chịu tìm hiểu chứ không phải diễn đàn " bất tiện " .

Chúng ta đang sử dụng một diễn đàn kiểu mới. Chúng ta đang là người đi trước người khác, vì thế chúng ta phải tìm hiểu nó

Đỗ Trung Quân viết 18:04 ngày 30/09/2018

Nhập N>2.Viết N dưới dạng tích các thừa số nguyên tố.VD:100=2^2*5^2.
Dành cho bạn nào thích đơn giản.

#include<math.h>
#include<iostream>
int main()
{
    int i,n;
    std::cout<<"\nEnter n:";
    std::cin>>n;
    std::cout<<n<<" = ";
    for(i=2;i<=n;i++){
        while(n%i==0){
            if(n==i) std::cout<<i;
            else std::cout<<i<<" * ";
            n=n/i;
        }
    } 
}
Phạm Hoàng Tuấn viết 18:16 ngày 30/09/2018

Bổ sung thêm chỗ kiểm tra i là số nguyên tố nữa bạn ơi.

Đỗ Trung Quân viết 18:04 ngày 30/09/2018

Bổ sung thêm chỗ kiểm tra i là số nguyên tố nữa bạn ơi.

Không cần kiểm tra vì i đúng luôn là số nguyên tố

Nguyễn Minh Dũng viết 18:10 ngày 30/09/2018

@Is2IT Câu này Ducky giải thích rõ hơn đi Hồi trước có học cái này rồi, mà giờ quên hết trơn, quê quá. Mới search lại thì ra cái này.

  • Nếu n là số nguyên tố, nó chỉ chia hết cho chính nó
  • Nếu n không phải số nguyên tố, thì xem chứng minh của Euclid http://goo.gl/tjLyat

Mấy bài này hay đấy

Phạm Hoàng Tuấn viết 18:15 ngày 30/09/2018

“vậy mỗi số nguyên lớn hơn một chỉ có một biểu diễn duy nhất dưới dạng tích thừa số nguyên tố (không kể đến thứ tự các thừa số).”

Thì ra là vậy.Giờ e mới hiểu. hix

Bài liên quan
0