Algoritma oluştururken lise matematik dersinde kullandığımız yöntemden yararlandık. Kullanıcının girdiği sayı ilk önce ikiye bölünmek isteniyor. Eğer bölünürse 2’nin bir asal çarpan olduğu anlaşılıyor ve ekrana yazdırılıyor. i = i – 1 ataması ile, sayı tekrar 2’ye bölünmeye çalışılıyor. 2’ye daha fazla bölünemiyorsa bu sefer aynı işlemler 3 için tekrarlanıyor. Bu şekilde devam ederek sonuca ulaşabiliriz.
Not : Farklı yontemlerle de sonuca gidilebilir.
#include <stdio.h> #include<conio.h> int main () { int s; int i; printf (" Bir sayi giriniz: "); scanf ("%d", &s); printf ("\n"); // Algoritma oluştururken lise matematik dersinde kullandığımız // yöntemden yararlandık. Kullanıcının girdiği sayı ilk önce ikiye // bölünmek isteniyor. Eğer bölünürse 2'nin bir asal çarpan olduğu // anlaşılıyor ve ekrana yazdırılıyor. i = i - 1 ataması ile, sayı // tekrar 2'ye bölünmeye çalışılıyor. 2'ye daha fazla bölünemiyorsa // bu sefer aynı işlemler 3 için tekrarlanıyor... for (i = 2; s != 1; i ++) { if (s % i == 0) { s /= i; printf ("%5d", i); i --; } } printf ("\n"); getch(); } |
bunun c# a göre düzenlenmiş hali varmı elinizde ?
meraba java için asal çarpanları diziye nasıl aktarabiliriz
Merhaba,kodda ufak bir hata var
böldüğünüz değişkeni sayıya aktardığınız için for döngüsünde böldüğünüz değişken çıkıyor
yani 14 ün asal çarpanını kodda deneyince sadece 2 çıkıyor
kodun düzenlenmiş hali böyledir
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package asalcarpanbulanprogram;
/**
*
* @author Che12
*/
public class Asalcarpanbulanprogram {
static int sayac = 0;
static int sayitutucu = 0;
static void asalcarpanbul(int sayi)
{
for(int i=2;i<sayi;i++)
{
if(sayitutucu%i == 0)
{
sayitutucu = sayi;
sayitutucu = sayitutucu/i;
System.out.println(i);
i–;
}
}
}
public static void main(String[] args)
{
asalcarpanbul(14);
}
}