01/10/2018, 12:07

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

#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;
	
	
}
HK boy viết 14:12 ngày 01/10/2018

10^(N-1)

Luỹ thừa không dùng kí hiệu là ^ trong C++.

Hung viết 14:22 ngày 01/10/2018

vậy thì khai báo đoạn code trong vòng For đầu tiên như thế nào ạ

HK boy viết 14:16 ngày 01/10/2018

Bạn phải tự viết hàm luỹ thừa bằng tay thôi.

Hung viết 14:17 ngày 01/10/2018

ủa thế các thuật toán lũy thừa trong C viết tay hết ạ :((

HK boy viết 14:17 ngày 01/10/2018

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.

Hung viết 14:15 ngày 01/10/2018

c có thể sửa code cho mh được k. chứ nói thế thì mh k hiểu được luôn á

HK boy viết 14:13 ngày 01/10/2018
  • 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.

Hung viết 14:15 ngày 01/10/2018

double i,j, m = 10 , n = N-1;
i = pow(m,n);
j = pow(m,(n+1)) -1;
for( i; i<j;i++)

HK boy viết 14:09 ngày 01/10/2018

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).

Hung viết 14:13 ngày 01/10/2018

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.

Hung viết 14:17 ngày 01/10/2018

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ò :))

HK boy viết 14:20 ngày 01/10/2018

cho t code

diễn đàn không cho phép xin code.

check i có phải nằm trong khoảng cần chọn k

  • 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.

chứ c cứ vòng vo thế thì khác nào đánh đố t tự mò :))

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:

Giờ rảnh được chút, làm thêm một bài nữa về một thuật toán cơ bản: tính lũy thừa an bằng phương pháp chia để trị. Chắc mọi người đa số hay dùng vòng lặp nhỉ (cứ ừ đại đi), bây giờ đổi gió xíu nhé Vào luôn vấn đề, như mọi người đã biết, an được tính bằng cách nhân n lần số a (nói vậy cho gọn đi) Mình lấy ví dụ: a8 = a . a . a . a . a . a . a . a (8 chữ a lận nhé) Ta nhận thấy rằng có thể chia nửa cái phép tính trên kia ra, như thế này: a8 = a4 + 4 = a4 . a4 trong đó, a4 có thể được tí…
Hung viết 14:13 ngày 01/10/2018

Cảm ơn 2 c nhé. dù gì vẫn là tự học từ mò vẫn hay hơn :))

Bài liên quan
0