Liczby półpierwsze
Kod był wyświetlany 3025 razy.
    /*
  Name: Liczby półpierwsze
  Copyright: GPL GNU
  Date: 29-09-10 19:45
  Description: 
               Liczby półpierwsze to takie, które dzielą się tylko przez jeden,
               siebie i przez dwie (niekoniecznie różne) liczby pierwsze, np: 
                      4 = 2 x 2
                      6 = 3 x 2
                      9 = 3 x 3
                      10 = 2 x 5
                      14 = 2 x 7
                      15 = 3 x 5
                      21 = 3 x 7
                      49 = 7 x 7
                      95 = 5 x 19
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
void nie(int);
void tak(int);
bool pierwszosc(int);
    
int main(){
    int n,i;
    float p;
    
    printf("\n\n\tPodaj liczbe do sprawdzenia: ");
    scanf("%d",&n);
    
    if(n<4) // liczby polpierwsze zaczynaja sie od 4
    nie(n);
    
    if(pierwszosc(n)) // jezeli liczba jest pierwsza
    nie(n);     // to nie jest polpierwsza
    
    p=sqrt(n);
    if((int)p==p) // jezeli liczba posiada pierwiastek calkowity
    {
        if(pierwszosc((int)p)) // i jest on liczba pierwsza
        tak(n);
        nie(n);
        }
        
    for(i=2;i<p;i++)
    {
        if(n%i==0) // jezeli liczba ma dzielnik
        {
            if(pierwszosc(i)) // ktory jest liczba pierwsza
            {
                if(pierwszosc(n/i)) // i dzieli liczbe na liczbe pierwsza
                tak(n);
                nie(n);   
                }
            nie(n);
            }
        }
    nie(n);
}
    
void nie(int n){
     printf("\n\n\t%d nie jest liczba polpierwsza.",n);
     getchar();getchar();
     exit(0);
           }

void tak(int n){
     printf("\n\n\t%d jest liczba polpierwsza.",n);
     getchar();getchar();
     exit(0);
           }
bool pierwszosc(int n)
{
    if(n<4)
    return 1;
    for(int i=2;i<=sqrt(n);i++)
    if(n%i==0)
    return 0;
    return 1;
    }
    
Pobierz plik tekstowy
Administrator WJL
PHP&SQL coded by NOVA-IT