Bài bạn làm cũng tương đối đúng rồi.
Chỉ có đều sau khi tìm được số nguyên tố đầu tiên thì biến dem=2.
Và bạn thấy đó, sau đó bạn chưa cập nhật lại biến dem, tức là cho dem trở lại là 0.
chỉ cần cho dem=0 lại là ok:
C Code:
Em mới học C nên còn yếu lắm. Bài kiểm tra 1 số có phải là nguyên tố em làm được nhưng liệt kê làm nó không ra. Mong mấy anh chị hướng dẫn
Code:#include <stdio.h> void main() { int n,dem=0; printf("\n Nhap n: "); scanf("%d", &n); for (int i=2;i<=n;i++) { for (int j=1;j<=i;j++) { if(i%j==0) dem=dem+1; } if(dem==2) printf("%d", i); } }
Bài bạn làm cũng tương đối đúng rồi.
Chỉ có đều sau khi tìm được số nguyên tố đầu tiên thì biến dem=2.
Và bạn thấy đó, sau đó bạn chưa cập nhật lại biến dem, tức là cho dem trở lại là 0.
chỉ cần cho dem=0 lại là ok:
C Code:
cám ơn anh nhiều! Em hiểu rồi
ban nen them dong may dong sau de chuong trinh chay tot hon:
#include <stdio.h>
#include <conio.h>
void main()
{
int n=500,dem=0;
for (int i=1;i<=n;i++)
{
for (int j=1;j<=i;j++)
{
if(i%j==0)
dem++;
}
if(dem==2)
printf("%d\t", i);
dem=0;
}
getch();
}
đây làm j phải Chương trình liệt kê số nguyên tố nhỏ hơn n mấy bạn
andyhung
Em nên làm quen với cách viết hàm con dễ hiểu hơn và đơn giản hơn nhiều :
tham khảo thêm về cách viết hàm e nhé :Code:#include<stdio.h> #include<conio.h> int ktnt(int k) { int d =0; for(int i=1;i<=k;i++) { if(k%i==0) d++; } if(d == 2) return 1; return 0; } void lietke(int n) { for(int i=2;i<n;i++) { if(ktnt(i) == 1) printf("%d\n",i); } } int main() { int n = 20; lietke(n); getch(); return 1; }
Học lập trình bắt đầu từ đâu ?
www.laptrinhCcanban.com
^ Code sai rồi kìa
i<=sqrt(n) cơ.
CODE kiểm tra nguyên tố này hay lắm chia sẻ bạn nhé
#include <iostream>
#include <conio.h>
using namespace std;
bool CheckPrimes(int n)
{
if (n < 2) return false;
if (n == 2) return true;
if (n%2 == 0) return false;
if (n == 3) return true;
if (n % 3 == 0) return false;
int i = 5;
int w = 2;
while (i * i <= n)
{
if (n % i == 0)
{
return false;
}
i += w;
w = 6 - w;
}
return true;
}
void main()
{
int n;
cout<<"Nhap so can kiem tra:";
cin>>n;
if(CheckPrimes(n)==false)
cout<<n<<" ko phai so nguyen to!\n";
else
cout<<n<<" La So Nguyen To!\n";
cout<<"Day nguyen to tu 2 den "<<n<<" :\n";
for(int i=2;i<=n;i++)
{
if(CheckPrimes(i)==true)
cout<<i<<"\t";
}
getch();
}
//có đôi dòng code lởm để góp ý với bác
#include <stdio.h>
#include <conio.h>
#include <math.h>
int main()
{
int i,n;
printf ("Nhap N:");
scanf ("%d",&n);
if (n==1)
printf ("%d ko phai la so nguyen to",n);
else
{
for (j=2;i<=n;j++)
{
{
for (i=2;i<=sqrt(j);i++)
{
if (j%i==0)
break;
}
if (i<=sqrt(j))
printf ("%d ko phai la so nguyen to",j);
else
printf ("%d la so nguyen to",j);
}
getchar();
}
}
return 0;
}