01/10/2018, 13:39

Code kiểm tra số nguyên tố bị sai các số dạng 3^n

code mình kiểm tra các số nguyên tố kia đúng, các hợp số khác cũng ra đúng, nhưng có chỉ 9,27,81(3^n) là bị lỗi: ví dụ như 9 kiểm tra lại ra là số nguyên tố

#include<stdio.h>
#include<math.h>
int SNT(int n)
{
	if(n==1) 
		return 0;
	else
		{
		for(int i=2;i<=(int)sqrt(n);i++)
			if(n%i==0)
					return 0;
			else 
				return 1;
		}

}
void main()
{
	int n;
	scanf("%d",&n);
	if(SNT(n)==0)
		printf("ko");
	else
		printf("co");
}
HK boy viết 15:55 ngày 01/10/2018
if(n%i==0)
	return 0;
else 
	return 1;

Code lởm quá. n không chia hết cho 2 nhưng chia hết cho 5 thì sao?

Hà Hải Long viết 15:44 ngày 01/10/2018

thì khi i tăng lên i==5 thì n%5==0 thì return 0=> ko phải số nguyên tố

HK boy viết 15:44 ngày 01/10/2018

Nhưng tại sao có else?

n = 35, (int)sqrt(n) = 5

i = 2 -> n % i != 0 -> dính vào else -> văng ngay return 1. Ổn không?

Hà Hải Long viết 15:42 ngày 01/10/2018

Cám ơn bạn nhiều mình đã hiểu rồi bây h chạy ok rồi

Bài liên quan
0