Yêu cầu:
Viết chương trình liệt kê tất cả các số nguyên tố nhỏ hơn giá trị N nhập từ bàn phím.
Thuật toán:
– Viết hàm kiểm tra số nguyên tố
– Dùng vòng lặp để in ra các số nguyên tố
Code:
/************************************************************ * Author: VNCODING * History * 2014/03/17 first create VNCODING *************************************************************/ #include "stdio.h" #include "conio.h" int so_nguyen_to(int N); void main() { int N, i; do { printf("\n Nhap vao so N = "); scanf("%d", &N); } while(N <= 0); printf("\n Cac so nguyen to nho hon %d :", N); for(i = 1; i <= N; i++) { if(so_nguyen_to(i)) printf(" %d ", i); } getch(); } // Ham kiem tra so nguyen to int so_nguyen_to(int N) { int i; if(N == 1) return 1; else { for( i = 2; i < N; i++) { if(N % i == 0) return 0; } return 1; } }
Kết quả:
Nhap vao so N = 30 Cac so nguyen to nho hon 30 : 1 2 3 5 7 11 13 17 19 23 29
anh giải thích giùm em mây cái lệnh return ở hàm int so_nguyen_to dc ko ạ, em chưa hiểu chỗ đó lắm
return 0 -> không phải số nguyên tố
return 1 -> là số nguyên tố
1 k phải là SNT
int i;
if(N == 1)
return 1;
Chỗ này phải return 0; Vì số 1 không phải là số nguyên tố.
if(so_nguyen_to(i)) doan nay thieu
if (so_nguyen_to(i) == 1)
@HuuDuan, trong chương trình này 2 đoạn code này tương đương nhau.
for i=2; i<=N/2 ; i++ mới đúng . nếu chỉ để i<N/2 thì gặp giá trị N=4 nó cũng hiểu là 4 là số nguyên tố.
a=835×123+318;a…P
P là số nguyên tố
mấy bác xem giúp e sai ở đâu mà chạy toàn ra true thế này các bác nhỉ :(((
fb.com/sstrrikerr
em là Thiên Bá CSGO =)))
_______________________________________________________
#include
bool checkNT( int n);
int main()
{
int n, i;
scanf( “%d”, &n);
for( i= 1; i< n; i++)
{
if ( checkNT( i))
{
printf( "%d\n", i);
}
}
return 0;
}
bool checkNT( int n)
{
int i;
if( i== 1,2)
{
return 1;
}
else
{
for( i= 2; i< n; i++)
{
if( n%i == 0)
{
return 0;
break;
}
}
return 1;
}
}
em tìm ra rồi, em sai ở chỗ if ( i == 1,2 ) hehe :p