C++ (Asal Sayı)
-
Hacılar bu işte çok yeniyim arkadaşın biri de yardım istedi benden yardımcı olmak istiyorum..
Ekranda girilen sayıya kadar olan asal sayıları yazacak bi program lazımmış..
Hiç bişi bilmediğimden yardım edemedim...
Şimdiden ilginiz için sağolun...
-
#include <stdio.h>
int main()
{
int a, b, c = 0;
printf (" Bir sayi giriniz: ");
scanf ("%d", &a);
printf ("\n");
for (b = 2; b < a; b ++)
{
// Kullanıcıdan alınan sayı 2'den başlanarak, kendisine kadar
// olan tüm tamsayılara sırayla bölünüyor. Eğer tam olarak
// bölünüyorsa c'nin değeri bir artırılıyor.
if (a % b == 0) c ++;
}
// c'nin başlangıç değeri 0 idi. Eğer a'nın tek bir tane bile tam
// böleni olsaydı, c'nin değeri 0 kalmazdı. c'nin değerinin 0
// kalması, kullanıcının girdiği sayının 2'den itibaren hiçbir
// tamsayıya tam olarak bölünemediği anlamını taşır. Yani girilen
// sayı asaldır.
printf (" %s\n", (c == 0) ? "Sayi asaldir." : "Sayi asal degildir.");
return 0;
}-----------------
mydesign isimli sitede yavuz nickli bir eleman yazmis kodlari.Oldukcada aciklayici.Isinize yarar.
Cozumu herzaman icin su sekilde kurun.Sizden istenen ne? Asal sayi.Asal sayinin matematiksel anlami nedir? Bu anlami iyi ogrenirseniz cozum uretebilmeniz daha kolay olur.Once kafanizda teorik olarak olayi kavramak gerekir.
-
Piyasada çok gezen bir asal sayı algoritması var
Ama onu kullanırsa işi yaş.
O yüzden ister istemez tek tek sayan bir mantık kullancak...
public static void main(String[] args)
{
System.out.println("");
boolean prime = true;
for(int numb = 2; numb <=2000; numb++)
{
prime = true;
for(int check = 2; check < numb; check++)
{
if((numb % check == 0) & prime)
{
prime = false;
break;
}
}
//prime = false
if(prime)
{
System.out.print(numb + " ");
}
}
}Ben bunu java ödevi olarak yapmıştım.
System.out.print leri 'cout' ile değiştirirsen sorunların çözülür.
(Bir de limit olarak girilen sayı olayına girmen lazım)
Edit: Vay anasını herkes mi yazmış lan bu kodu daha önce :|
-
#include<stdio.h>
#include<conio.h>
// Verilen sayinin asal olup olmadigina
// bakar. Sayi asalsa, geriye 1 aksi hâlde
// 0 degeri doner.
int sayi_asal_mi( int sayi )
{
int i;
for( i = 2; i <= sayi/2; i++ ) {
// Sayi asal degilse, i'ye tam olarak
// bolunur.
if( sayi%i == 0 ) return 0;
}
// Verilen sayi simdiye kadar hicbir
// sayiya bolunmediyse, asaldir ve
// geriye 1 doner.
return 1;
}
// main fonksiyonu
int main( void )
{
int girilen_sayi;
int test_sonucu;
do{
printf( "Lütfen bir sayı giriniz> " );
scanf( "%d",&girilen_sayi );
test_sonucu = sayi_asal_mi( girilen_sayi );
if( !test_sonucu )
printf("Girilen sayı asal değildir!\n");
} while( !test_sonucu );
printf( "Girilen sayı asaldır!\n" );
system(pause);
return 0;
} -
Çok sağolun hocalar.Eminim iş görecektir bunlar.
-
#include
main()
{
int a,b,c;
for(b=2;b<=1000;b++)
{
c=1;
for(a=2;a<=b/2;a++)
{
if(b%a==0)
{
c=0;
break;
}
}
if(c==1)
{
printf("%d\n",b);
}
}
}
ben yazmıştım son baktığımda çalışıyordu :D2 dinde 1000 e kadar verio :D
ilk for döngüzünden 1000 yazan yeri değiştir yeter yada fordan önce bir scanf kullansan olur
-
Abi herkes üst limiti sayının yarısı yapmış..
Sayının karekökü yapsak olmuyo mu?
-
asal yanı bir kendine birde başka 1 ile tam bölne bilen sayı ise
burada bie sayıyı tam olarak böle bilecek en büyük tam sayı nedir
onun yarıdır değilmi ;)
-
wert bunu yazdı:
-----------------------------asal yanı bir kendine birde başka 1 ile tam bölne bilen sayı ise
burada bie sayıyı tam olarak böle bilecek en büyük tam sayı nedir
onun yarıdır değilmi ;)
-----------------------------Yarısı mıdır acaba?
36 için düşünelim...
(1,36)
(2,18)
(3,12)
(4,9)
(6,6)
(9,4)
(12,3)
(18,2)
(36,1)
6*6 dan sonrası diğer çarpanların simetriği oluyo...
Sanırım bütün sayılar için geçerli bu.. Bilmem yanlış mıyım?
-
Ufak bi araştırma sonucu buldum tezimi destekleyen bi kod =)
# include <cmath> // This library enable the use of sqrt.
# include <iostream>
using namespace std;
void primenum(long double); // Prototype...
int c = 0;
int main()
{
long double x = 0;
cout<<"\n This program will generate allprime numbers up to the"
<<"\nnumber you have entered below...\n";
cout<<"\n Please enter anumber: ";
cin>> x;
cout<<"\n Here are all theprime numbers up to "<<x<<".\n";
primenum(x); //function invocation...
cout<<endl<<"\nThere are "<<c
<<"prime numbers less than or equal to "<<x<<".\n\n";
return 0;
}
// This function will determine the primenumbers up to num.
void primenum(long double x)
{
boolprime = true; // Calculates the square-root of 'x'
int number2;
number2 =(int) floor (sqrt (x));
for (int i = 1; i <= x; i++){
for ( int j = 2; j <= number2; j++){
if ( i!=j && i % j == 0 ){
prime = false;
break;
}
}
if (prime){
cout <<" "<<i<<" ";
c += 1;
}
prime = true;
}
}ha ayrıca büyük sayılarda diğer scriptlerden çok daha verimli çalışır bu...
113 için diğer script 56 bölme yapacakken bu sadece 11 bölme yapar ;)
-
ZoktriP bunu yazdı:
-----------------------------wert bunu yazdı:
-----------------------------asal yanı bir kendine birde başka 1 ile tam bölne bilen sayı ise
burada bie sayıyı tam olarak böle bilecek en büyük tam sayı nedir
onun yarıdır değilmi ;)
-----------------------------Yarısı mıdır acaba?
36 için düşünelim...
(1,36)
(2,18)
(3,12)
(4,9)
(6,6)
(9,4)
(12,3)
(18,2)
(36,1)
6*6 dan sonrası diğer çarpanların simetriği oluyo...
Sanırım bütün sayılar için geçerli bu.. Bilmem yanlış mıyım?
-----------------------------iyi sen bana 36 yı tam olarak bölen en büyük sayıyı söylermisin
36 yı 2 ye bölmek farlı 18 ze bölmek farklı ben burada o sayıların içerisinde en büyük çarpan hangisi onu söylermisin bana
