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 ạ :>> )
For trong for và break
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.
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ả.
đú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