5 Şubat 2010 Cuma

Modüler İşlemde Ters Alan C Programı

#include<stdio.h>

int main(){

int num,mod;

printf("\nTersi alinacak sayiyi giriniz:");
scanf("%d",&num);
printf("\nHangi moda gore alinacak:");
scanf("%d",&mod);


int m=mod; //son adımda mod bize lazım olacak
int trs=0, d=1; //eğer tersi yoksa 0 döndürecek

while (num>0) { //pozitif olmalı tersi bulunması için
int bolum = m/num, sayi = num;
num = m % sayi; //kalanı atıyoruz
m = sayi;
sayi = d;
d = trs - bolum*sayi;
trs = sayi;
}

trs %= mod;
if (trs<0) //eğer negatifse o moda göre pozitif eşitini buluyoruz
trs=(trs+mod)%mod;

printf("\n%d\n\n",trs);

return 0;
}

Euler-Fermat Teoremi

//ax=b mod m işleminin (yani modülerde ters alma işleminin)
//euler-fermat teoremine göre genişletilmesi

//Euler-Fermat Teoremi:
//a ve m aralarında asal ise

//x=b*a^(U(m)-1) mod m

//U(n)=n*(1-1/asalçarpan1)*(1-1/asalçarpan2) kaç tane asal çarpanı varsa

//örneğin U(45)=45*(1-1/5)*(1-1/3)

#include<stdio.h>

int main(){

int a,m,b,um=0,temp,x,ustel=1;

printf("\nax=b mod m isleminin Euler-Fermat Teoremine gore genisletilmesi\n\n");

printf("\nTersi alinacak sayiyi giriniz(a):");
scanf("%d",&a);

printf("\nHangi moda gore alinacak(m):");
scanf("%d",&m);

printf("\nb katsayisini giriniz:");
scanf("%d",&b);

int sayac=0,l,ks;//aralarında asla ise kontrol

if(a<m)
ks=a;
if(m<a) //küçük sayiyi bulduralım ki döngü daha az çalışsın.
ks=m;

for(l=2;l<=ks;++l)
if(a%l==0 && m%l==0) //aralarında asal mı??
sayac=1;

if (sayac==0) //------------------aralarında asal ise
{
temp=m;//mod kısmı daha sonra işimize yarayacak,geçici değişkende tutalım

int i,j=0; //asal çarpanları bulan kısım
int asalcarpan[20];

for(i=2;i<=m;i++){
if(m%i==0){
asalcarpan[j]=i;
j=j++;
m=m/i;
}}//asal çarpanları bulan kısım sonu

um=temp;//mod olan m' nin ilk halini atıyoruz

int ii,jj;

for(ii=0;ii<j;++ii) //U(m) yi buluyoruz
um=(um*asalcarpan[ii]-1)/asalcarpan[ii];
//um=um*(1-1/asalcarpan[ii]);


for(jj=1;jj<um;jj++) //a^(U(m)-1) işlemini yapıyoruz
ustel=ustel*a;

x=(b*ustel)%temp; //son olarak x' i buluyoruz

printf("\nx=%d mod %d\n",x,temp);
}//if sonu

else
printf("\nSayilar aralarinda asal degil,Fermat-Euler Teoremine gore cozulemez,baska yontem deneyin:::\n");

return 0;
}

Hızlı Modüler Üs Alma Algoritması

//HIZLI MODÜLER ÜS ALMA ALGORİTMASI

#include<stdio.h>

int main(){

int a, b, m;//taban , üs ve mod değişkeni
int c=0, d=1, i, k=0;//k sayaç
int on;
int binary[100];//üssün ikilik karşılığı

printf("\ntaban olacak sayiyi giriniz:(a)");
scanf("%d",&a);
printf("\nus olacak sayiyi giriniz:(b)");
scanf("%d",&b);
printf("\nmod olacak sayiyi giriniz:(m)");
scanf("%d",&m);

on=b; //b yi ikiliye çevir binary[] dizisine ata,rakam sayısını k ya ata
while (on>0)
{
binary[k]=on % 2;
on = on / 2;
k++;
}

/*for(i=0;i<k;i++)
printf("%d", binary[i]);*/

for(i=0;i<k;i++){//hızlı üs alma algoritması

c=2*c;

d=(d*d)%m;

if(binary[k-1-i]==1){
c++;
d=(d*a)%m;
}
printf("\n%d\t%d\t%d",binary[k-1-i],c,d);//ekrana yazdırma
}

printf("\n");
return 0;
}

Euclid Algoritması ile OBEB bulma

#include<stdio.h>
#include<math.h>

int main()
{
int a,b,buyuk,kucuk,kalan;

printf("\nEuclid Algoritmasi ile OBEB bulma\n\n");
printf("birinci sayiyi giriniz:");
scanf("%d",&a);
printf("ikinci sayiyi giriniz:");
scanf("%d",&b);

if(b>a){
buyuk=b;
kucuk=a;
}
else {
buyuk=a;
kucuk=b;
}

if(buyuk%kucuk==0)
printf("OBEB=%d",kucuk);
else{
while(buyuk%kucuk!=0) {
kalan=buyuk%kucuk;
buyuk=kucuk;
kucuk=kalan;
}
printf("OBEB=%d",kalan);

}
printf("\n");
return 0;
}

2 Şubat 2010 Salı

Ekran Görüntüsü Alma Programı - SRIP32

Screenrip32: Çook kullandığım basit bir program. Çok kolay bir şekilde istediğiniz nesnenin görüntüsünü alabiliyorsunuz. Freeware bir yazılım yani beleş.Dili İngilizce. Progency firmasına ait.Dosya boyutu çok küçük(513 KB - Bendeki sürüm Screen Rip32 v1.0 Beta).Kurulum gerektirmiyor. İndirdiğiniz exe dosyasına tıklamanız yeterli. Biraz programa bakalım:

Öncelikle Capture Image kısmına bakalım. Burada çeşitli görüntü alma seçenekleri var.
Grab Screen: Bütün ekranın görüntüsünü alır.
Grab Rectangular Area:En çok kullandığım kısım.Tıkladıktan sonra + işareti çıkacaktır. Nereden itibaren görüntü almak istiyorsanız oraya tıklayın ve bitirmek istediğiniz noktaya kadar sürükleyin. Dikdörtgen bir alanın görüntüsünü almış olursunuz.
Grab Window: Sayfanın belirli bir kısmının görüntüsünü almak için kullanabilirsiniz.
Grab Active Window: En son aktif olan pencerenin görüntüsünü almak için kullanılabilir.

Görüntüyü aldıktan sonra kaydetmek için File - Save as kısmında size sunulan formatlarda resmi kaydedebilirsiniz.

Buradan indirebilirsiniz...