#include <iostream>
#include <conio.h>
using namespace std;
// Bai tap liet ke tat ca cac so nguyen to co N chu so va tong cac chu so dung bang S cho truoc.
int snt(int N, int S){
for(int i = 10^(N-1); i<10^N-1;i++){
int a,b;
for(a=1; a < i; a++){
int dem = 0;
for(b=1; b<a; b++){
if(a%b==0){
dem++;
}
if(dem == 2){
int tong = 0;
while(a>0){
int d = a % 10;
tong = tong + d;
a = a/10;
}
if (tong == S){
cout<<a<<" ";
}
}
}
}
}
return 0;
}
int main()
{
int S;
int N;
cin>>N>>S;
int snt1 = snt(N,S);
return 0;
}
Check lỗi giúp code in ra tất cả các số nguyên tố có N chữ số và tổng các chữ số đúng bằng S cho trước
Luỹ thừa không dùng kí hiệu là ^ trong C++.
vậy thì khai báo đoạn code trong vòng For đầu tiên như thế nào ạ
Bạn phải tự viết hàm luỹ thừa bằng tay thôi.
ủa thế các thuật toán lũy thừa trong C viết tay hết ạ :((
Hàm luỹ thừa có sẵn của C trả về số thực nên mình mới bảo bạn viết tay, vì bạn đang cần kết quả là số nguyên.
c có thể sửa code cho mh được k. chứ nói thế thì mh k hiểu được luôn á
- Viết hàm luỹ thừa bằng tay.
- Thay thế vào các chỗ
10^N
,… kia.
Bạn viết đi mình xem.
double i,j, m = 10 , n = N-1;
i = pow(m,n);
j = pow(m,(n+1)) -1;
for( i; i<j;i++)
Bài của bạn đang xét đến số nguyên, đừng dùng hàm pow (vì hàm pow trả về số thực).
key cho bài này là t cần cái chỗ hàm mũ ntn nữa thôi. vì 2 bước trên t làm đúng rồi. vậy mong c có thể cho t code của cái hàm check i có phải nằm trong khoảng cần chọn k thôi.
t k biết dùng hàm mũ chỗ này mới phải hỏi c ạ. chứ c cứ vòng vo thế thì khác nào đánh đố t tự mò :))
DNH không cho phép xin code.
- Dùng if để kiểm tra.
- Chạy for trong khoảng cần xét -> khỏi viết hàm kiểm tra.
Google có thể giúp bạn mò mà.
http://diendan.congdongcviet.com/threads/t34483::viet-ham-pow-int-i-int-j-trong-lap-trinh-c.cpp
Cao cấp hơn:
Cảm ơn 2 c nhé. dù gì vẫn là tự học từ mò vẫn hay hơn :))