#include <stdio.h>
#include <stdlib.h>
int asalKontrol(int);
int main(){
int dizi[4][4];
int x;
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
printf("%dx%d)Sayi giriniz: ", i, j);
scanf("%d", &dizi[i][j]);
}
}
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
x = asalKontrol(dizi[i][j]);
if(x == 1)
printf("%dx%d:%d\n",i, j, dizi[i][j]);
}
}
printf("\n");
system("pause");
return 0;
}
int asalKontrol(int sayi){
int kontrol = 0;
if(sayi < 2)
return -1;
for(int j=2; j<=sayi/2; j++){
if(sayi % j == 0){
kontrol = 1;
break;
}
}
if(kontrol == 0)
return 1;
else
return -1;
}
Bkz: Nested LoopsMantıklı çözüm yolu. Benim kavrayamadığım nokta ben sütun ve satır için 2 tane [10][10]luk dizi oluşturdum tamam. Ve eğer yanlış düşünmüyorsam bu sayılar her bir satır ve sütuna atanacak. [6][7] deki sayı 26 gibi mesela. Ben döngüde matrisin her bir [x][x]i için asallığı nasıl kontrol edeceğimi çözemedim sadece. Yani
for(i=0;i<=dizi[][];i++)
if(karekökle dediğinizi yapıp asallığı sağlama koşulu sağlanıyorsa) printf("blabla",blabla);
gibi yazamıyorum sanırım. Burada tıkandım.
int i,j;
for(i = 0; i < 10; i++)
{
for(j = 0; j < 10; j++)
{
int temp = matrix[i][j];
if(isPrime(temp) != 0)
{
printf("%d is a Prime Number\n",temp);
}
}
}
//#include <math.h> gerektirir.
int isPrime(int number)
{
int flag = 1, i;
if(number > 2 && number % 2 == 0)
{
return 0;
}
for (i = 2; i <= sqrt(number); i+=2)
{
if(number % i == 0)
{
flag = 0;
break;
}
if(i == 2)
{
i--;
}
}
if(number >= 2)
{
return flag;
}
else
{
return 0;
}
}
Dizileri bugün gördüm ve inanılmaz basit örneklerdi burada tıkandım ve dediğinizi anlayamıyorumPaylaştığınız kodun main kısmındaki ikinci for döngüsü gibi yapacaksınız. i ve j olarak gösterilen iç içe iki değişken bütün matrisi gösterecek. Kod ilk for döngüsüne girdiğinde bütün x[0][j]’leri kontrol edecek ikinci for döngüsünde. Bittiği zaman x[1][j]’leri kontrol edecek ve bu tamamını kontrol edene dek devam edecek.
Kod://#include <math.h> gerektirir. int isPrime(int number) { int flag = 1, i; if(number > 2 && number % 2 == 0) { return 0; } for (i = 2; i <= sqrt(number); i+=2) { if(number % i == 0) { flag = 0; break; } if(i == 2) { i--; } } if(number >= 2) { return flag; } else { return 0; } }
Siz neyi anlamadığınız bile anlamamış durumdasınız;Dizileri bugün gördüm ve inanılmaz basit örneklerdi burada tıkandım ve dediğinizi anlayamıyorum
Hocam asal sayı bulmakta sorun yok. Ben dizilerdeki asal sayıları nasıl bulacağımı anlamadım. Rastgele 100 tane sayı verecek ben herhangi birisine i veya j diyemem ki.
isPrime(matrix[i][j]) != 0 ? printf("prime\n") : printf("non prime\n");
Siz neyi anlamadığınız bile anlamamış durumdasınız;
i ve j diye iki tane değişken tanımlayıp tüm matrixi dolaşacaksanız
i = 0 için 10 tane j, i = 1 için 10 tane j...
Toplamda 100 kere kontrol yapacaksınız.
Genel algoritma mantığı ve döngü bilginiz eksik.
attığım kod 10'a 10'luk matrix içerisindeki tüm asalları buluyor.
Dikkatlice incelerseniz nasıl yaptığımı anlama ihtimaliniz yüksek.
Hatta kafanız karışmasın diye önce Temp'e aktardım ondan sonra isPrime() fonksiyona gönderdim.
direkt olarak;
isPrime(matrix[i][j]) != 0 ? printf("prime\n") : printf("non prime\n");
şeklinde tek satıra bile indirgenebilir.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
srand(time(NULL));
float x;
int matris[100][100],max,a,i,j;
for(i=0;i<10;i++)
{
for(j=0;j<10;j++)
{
matris[i][j]=rand()%100;
printf("%d\t",matris[i][j]);
}
printf("\n");
}
max=0;
}
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
int main(){
srand(time(NULL));
int i,j,k,m,matris[100][100];
for (i=0;i<=10;i++){
for(j=0;j<=10;j++){
matris[i][j]=rand()%100;
}
}
for(k=2;k<=i-1;k++){
for(m=2;m<=j-1;m++){
if (i%k!=0 || j%m!=0) printf("%d",i,j);
}
}
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
srand(time(NULL));
int i,j,k,toplam=0,matris[100][100];
for(i=1;i<=10;i++){
for(j=1;j<=10;j++){
matris[i][j]=rand()%100;
printf("%d\t",matris[i][j]);
}
printf("\n");
}
for(k=2;k<=matris[i][j]-1;k++){
if(matris[i][j]%k!=0)
toplam=toplam+k;
printf("Asal toplam: %d",toplam);
}
}
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main(){
srand(time(NULL));
int matris[10][10],i,j,k,toplam=0,flag;
for(i=0;i<10;i++){
for(j=0;j<10;j++){
matris[i][j]=rand()%10;
printf("%d ",matris[i][j]);
flag=0;
for(k=2;k<matris[i][j];k++){
if(matris[i][j]%k==0){
flag=1;
continue;
}
}
if(flag==0){
toplam+=matris[i][j];
}
}
printf("\n");
}
printf("\n asal toplam= %d",toplam);
}