Salam.Mən C++ dilini təzə öyrənirəm.Müəllim bir tapşırıq verib.100-dən 200-ə qədər sadə ədədləri ekrana çıxaran proqramı yazmaq mənə tapşırılıb.Məncə alqoritmim düzdür, ancaq proqram 197, 198, 199 ədədlərini təkrar-təkrar ekrana çıxarır.Bu da kod:
#include <iostream>
using namespace std;
int main(int argc, char *argv[])
{
int i,j,k=0;
for(i=101;i<200;i++)
{
for(j=2;j<i;j++)
{
if(i % j==0) break;
else k=1;
}
if(k=1) cout<<i<<“n”;
}
return 0;
}
Verilmiş cavablar və yazılan şərhlər (4 cavab var)
2
sənin səhvin
1
if(i % j==0) break;
2
else k=1;
burdadı beləki fərz edək i=15. j=2 olanda i%j=1 olur buna gore sendə k=1 olacaq. j=3 olanda i%j=0 olacaq və dövr sınacaq j=2 olanda sən k=1 etdiyin üçün dövr break olanda k=1 olacaq və geriyə true döndərəcək.
başqa bir xətan if(k=1) belə yazdğında k=1 olur yəni şərt işləmir bəzi compile lar bunu xəta olaraq göstərsədə bəziləri göstərmir.
prime number ləri tapmaq üçün müxtəlif metodlar var internetdən daha ətraflı məlumat tapa bilərsən.
[/code]bool isPrime(int x)
{
if(x!=1 && x<4 )
return false;
else
{
for(int i=2; i<=sqrt(x); i++)
if(x%i==0)
return false;
}
return true;
}
bu prime number ları tapmaq ucun istifadə olunan metodlardı. dövrdə nəyə görə sqrt(x) istifadə etdiyimi bilmək istəsən [/code]
2
Heyder senin algoritmin bu olmaq isdiyib)
#include
using namespace std;
int main()
{
int k=0;
for(int i=101;i<=200;i++)
{
for(int j=2;j<=i/2;j++)
{
if(i%j==0)break;
else
{
k=1;
}
}
if(k==1)cout<<i<<endl;
k=0;
}
return 0;
}
2
1
#include <iostream>
2
using namespace std;
3
int main ()
4
{
5
for (int i=100; i<200; i++)
6
{
7
bool sade = true;
8
for (int n=2; n*n<=i; n++)
9
{
10
if (i % n == 0)
11
{
12
sade = false;
13
break;
14
}
15
}
16
if(sade) cout << i << endl;
17
}
18
return 0;
19
}
0
Her birinize tesekkurumu bildirirem.Coxsagolun…
Sual verin
Cavab verin