30/09/2018, 20:07

Nhập số nguyên dương n >10, tìm và hiển thị ra màn hình n số nguyên tố đầu tiên và tổng của chúng

Nhập số nguyên dương n >10, tìm và hiển thị ra màn hình n số nguyên tố đầu tiên và tổng của chúng.
em dag hoc ngôn ngu lập trình C , em cần viết bài này sử dụng vòng lặp ạ…
giúp em với!!

Ngô Doãn Tuấn viết 22:17 ngày 30/09/2018

Bạn ơi. Bạn không nên hỏi bài như thế này nhé bạn
Bạn nên tự làm theo ý tưởng của bạn. Code sau đó buil run rồi nếu có lỗi up code lên diễn đàn mọi người cùng thảo luận. Đó là mục đích của diễn đàn
Còn bài này thì mình cũng góp ý chút là : Bạn sử dụng cấu trúc lặp và hàm kiểm tra số nguyên tố ? Bạn thử xem sao nhé

Sáng Béo viết 22:17 ngày 30/09/2018

bạn đang học vòng lặp thế chắc chưa học đến hàm nhỉ, thế phải dùng vòng lặp lồng nhau rồi.
Bạn đã biết dùng vòng lặp để kiểm tra xem 1 số có phải là số nguyên tố không chưa?
Với kiểu hiển thị ra màn hình n số nguyên tố đầu tiên thì ta chưa biết được số đấy trong khoảng nào, vậy thì cần dùng vòng lặp chưa biết số lần lặp (while). Bạn sẽ khởi tạo 1 biến để đếm số số nguyên tố tìm được và 1 biến lưu tổng các số nguyên tố đó, 1 biến để chạy. rồi bạn dùng vòng lặp while để xét lần lượt từng giá trị của biến chạy, nếu biến chạy là số nguyên tố (dùng 1 vòng lặp để kiểm tra) thì tăng đếm và cộng tổng. cứ thế đếm đủ thì nó out khỏi while và bạn in ra kết quả.

ThuThao viết 22:12 ngày 30/09/2018
int main ()
{
    int n,a,i,S,St,dem;
    do
    {
        printf("Nhap vao so nguyen duong n >10: ");
        scanf("%d",&n);
        if (n<=10)
        {
            printf("\n Gia tri n khong hop le, Vui long nhap lai!\n");
        }
    }while (n<=10);
    printf("\n %d so nguyen to dau tien la ",n);
    S=0;
    St=0;
    dem=0;
    for(i=2;;i++){
        for(a=1;a<=i;a++)
        {if(i%a==0)
            {
               St=St+a;
               if(St==i+1){
                    printf(" %d    ",i);
                    S=S+i;
                    dem=dem+1;
                    }
               }
            }

        if (dem == n){
                        break;
                    }
    }
    printf("\n Tong cua %d so nguyen to dau tien la %d",n,S);

    getch ();
    return 0;
}

đây là phần code của e em ko bít là sai ở đâu nữa…
hihii em là thành viên mới nên ko bít là phải hỏi ntn cho chuẩn ạ anh chị thông cảm^^

Sáng Béo viết 22:15 ngày 30/09/2018

Bạn ơi, cho code vào markdown đi bạn

Ngô Doãn Tuấn viết 22:14 ngày 30/09/2018

Không sao . Nhưng bạn sửa lại bài và cho code vào markdown đi đã nhé
bạn thêm code vào giữa hai dấu ` nhé

Sáng Béo viết 22:20 ngày 30/09/2018

bạn thêm code vào giữa hai dấu ` nhé

nên thêm vào giữa như sau:
(3 dấu `)C
code
(3 dấu như trên)

ThuThao viết 22:23 ngày 30/09/2018

hic cái markdown là cái gì đấy ạ ???!!
mà làm sao để làm nó ạ?

Sáng Béo viết 22:16 ngày 30/09/2018

hic cái markdown là cái gì đấy ạ ???!!

Nó có nhiều cái lắm, ở đây thì để định dạng hiển thị code cho dễ đọc hơ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…

ThuThao viết 22:21 ngày 30/09/2018

em thêm ``` vào rồi…nhưng… nó chả có hiện tượng gì cả?!!

Sáng Béo viết 22:21 ngày 30/09/2018
for(i=2;;i++){
		for(a=1;a<=i;a++)
		{
			if(i%a==0)
			{
				St=St+a;
				if(St==i+1){
					printf(" %d ",i);
					S=S+i;
					dem=dem+1;
				}
			}
		}
		
		if (dem == n){
			break;
		}
	}

Sai ở đây nhé, sau mỗi lần xét 1 i thì bạn phải đặt lại St = 0 để dùng cho i sau nha

ThuThao viết 22:21 ngày 30/09/2018


cảm ơn anh ạ!!

Bài liên quan
0