For trong for và break

Cho em hỏi về một cái for trong for ,em sẽ gọi for ở trong là for2 và for ở ngoài là for 1 cho dễ phân biệt . Em đang cần break cái for2 và tiếp tục for1 nhưng mà khi em để lệnh break ở trong for2 nó lại phá luôn cả cái for1 . Em phải làm sao đây ạ ( em mới chỉ học code được 1 năm thôi nên mong mọi người nhẹ tay ạ :>> )

Lạ đấy bạn, trong C++, không hề ngắt vòng lặp ngoài khi gặp break ở vòng lặp trong. Bạn có nhầm lẫn gì không, xem lại điều kiện của cả 2 vòng lặp.
Dưới đây sẽ ngắt cả 3 vòng lặp khi gặp break, nhưng chỉ là nhầm lẫn:

for(int a = 0; a < 1; ++a){
    for(int b = 0; b < 10; ++b){
        for(int c = 0; c < 100; ++c){
            if(a == 0 && b == 9 && c == 99) break;
            if(a = b && b = c && c = 99) break;
        }
    }
}

Một câu hỏi ngược lại của bạn.

5 Likes

Có khi do code ngu chứ không phải là vấn đề gì cả, lỗi gì thì post code lên chứ đừng mô tả khi mà mình không hiểu gì

#include<bits/stdc++.h>
using namespace std;
bool a[1000000] ; // false la snt || true la khong phai
int sl[22044];
int main() {
	int dem=1;
	for(int i=2; i<=250000; i++) {
		if(a[i]==false) {
			sl[dem]=i;
			dem++;
			for(int f=2*i; f<=250000; f+=i) {
				a[f]=true;
			}
		}
	}
//ham sl la ham cac snt tu 2->250000
	long long n,m;
	cin >>n;
	for(int i=1; i<=n; i++) {
		cin >>m;
		dem=0;
		long kq=0;
		for(int f=2; f<22044; f++) {//while()
			long long tich=sl[f]*sl[f-1];
			if(tich*tich>m) {
				kq+= (dem*(dem-1))/2;
				break; //VAN DE :break xuyen qua luon ca 2 for
			}
			dem++;
		}
		if(dem==1)cout<< 1;
		else cout<<kq;
	}
}

code của em đây ạ. đề của bài là tìm số số có 9 ước <=m (nhiều m;m<=10e12 ) cho những ai cần :vv

Số này có đúng 9 ước?

Bạn bảo break xuyên qua for1 có nghĩa là chỉ in duy nhất 1 kết quả (hoặc không in gì)?

Mình đã chạy thử, không thấy ngắt xuyên gì cả.

2 Likes

đúng là số này có 9 ước , mình phát hiện quy luật là bình phương của tích 2 số nguyên tố sẽ có 9 ước
có ngắt mà bạn mình thử test 1 100 thì nó chỉ ra 1 trường hợp là 36= (23)^2 , thiếu trường hợp 100= (25)^2 rồi

à em phát hiện sai thuật toán rồi ạ :vv cảm ơn mọi người

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