divisibilità

Stato
Discussione chiusa ad ulteriori risposte.

imported_lepa

Utente Silver
28 Settembre 2008
266
11
1
99
allora, io posto questo esercizio che è proprio una cazzatina, ma visto che non sapevo cosa fare, mi è sembrato una buona idea postarlo qua, visto la richiesta di kripnos in shout...
in pratica dovete far trovare al programma tutti i divisori del numero...

Codice:
#include <iostream>
using namespace std;

int main()
{
    int x, y;
    cout << "Inserisci il numero di cui trovare i divisori'\n";
    cin >> x;
    for (y=2; y<=x; y++){
        if (x%y==0) cout << "\nIl numero e' divisibile per " << y;
        else cout << "\nIl numero non e' divisibile per "<< y;
        }
    
    return 0;
}
 
[C++ (il mio primo script)]
Codice:
#include <iostream>
using namespace std;
int main () {
  int i, num;
  cout << "Inserisci il numero\n";
  cin >> num;
  for (i=2; i<=num/2; i++) {
    if (num%i==0) {
      cout << "Divisore: " << i << "\n";
    }
  }
  fflush(stdin);
  getchar();
  return 0;
}

[C]
Codice:
#include <stdio.h>
int main () {
  int i, num;
  printf("Inserisci il numero\n");
  scanf("%d", &num);
  for (i=2; i<=num/2; i++) {
    if (num%i==0) {
      printf("Divisore: %d\n", i);
    }
  }
  fflush(stdin);
  getchar();
  return 0;
}
 
Perché un numero non darà mai una divisione con quoziente=0 e con dividendo intero più grande della sua metà, così lo script consuma meno risorse.
 
PHP
PHP:
<?php
function divisori($a){
$risultato=array();
for($b=1;$b<=$a/2;$b++){
$c=$a/$b;
if(is_integer($c)){
$risultato[]=$b;
}
}
$risultato[]=$a;
print_r($risultato);
}
?>
 
in java:
Codice:
public void divisibilità(int v){
        for(int i=2;i<=v;i++){
            if(v%i==0){
                System.out.println(v+" è divisibile per "+i);   
            }
        }
    }

in "javascript":
Codice:
<script language="JavaScript" type="text/javascript">
       var v=prompt("Inserisci il numero:","");
	   for(var i=2;i<=v;i++){
		 if(v%i==0){
			document.write(v+" è divisibile per "+i+"<br/>");
		 }
	   }
  </script>
lo stavo per fare in php ma ste mi ha anticipato xD!
 
PHP:
PHP:
$limit = 100;
$number = 20;
for ($i=2;$i<=$limit;$i++) {
	if ($number % $i >= 1) {
		echo "Il numero {$number} non &egrave; divisibile per {$i}<br />";
	} else {
		echo "Il numero {$number} &egrave; divisibile per {$i}<br />";
	}
}
 
[size=large]Versione semplice[/size]
Codice:
#include <stdio.h>
main(){
     int n, x;
     int a = 2;
     puts("Inserisci un numero: ");
     scanf("%d",&n);
     for (x=2; x<=n/a;x++) {
            if (n%x==0) {
                   printf("Divisore: %d\n", i);
            }
       }
}
EDIT: Scusate se il codice si assomiglia con quello di altri,volevo postarlo ugualmente....
[size=large]Versione con API di windows[/size]
Codice:
#include <stdio.h>
#include <windows.h>
#define STRICT
#define WIN32_LEAN_AND_MEAN
void pausa();
int WINAPI 
WinMain(HINSTANCE hInst,  HINSTANCE hPrevInst,LPSTR lpCmdLine, 
int nCmdShow)
{
    
    int n, x,z;
     int a = 2;
     MessageBox(0, "Inserisci un numero:", "Inserisci....", MB_OK);
     scanf("%d",&n);
     z = n;
     for (x=2; x<=n/a;x++) {
            if (n%x==0) {
                  printf("Un divisore di %d e' %d\n",z,x);
            }
     }
    pausa();
    return 0;
}
void pausa(){
     #ifdef WIN32
     system("pause");
     #endif
     #ifdef LINUX
     getchar();
     #endif
}
 
in MatLab:
Codice:
n = input('n = ');
dv = [];
% elimino tutti i divisori pari ;)
if ~mod(n,2)
    dv = [dv,2];
end
% testo i divisori dispari fino a sqrt(n) visto che la radice
% di un numero è la più grande coppia di divisori di se stesso
for i0 = 3:2:ceil(sqrt(n))
    if ~mod(n,i0)
        dv = [dv,i0];
    end
end
msg = sprintf(' %d = [',dv);
disp(msg);
 
_Wizard ha detto:
Python:
Codice:
def FindDiv(n):
	div = [];
	for i in range(1,n):
		if n % i == 0:
			div.append(i);
	return div;

oldissimo... conversazione abbastanza morta...
ultimo msg :27/11/2008 12:48 PM
 
meh. ha detto:
Si ma essendo esercizi non e' un crimine bumpare un vecchio topic ;)

nono verissimo però credo che nel frattempo l'interesse per questo problema adesso stia a zero se non sotto....
 
Si ma se gli esercizi vengono postati vuol dire che si possono fare, e non credo che sia sbagliato riesumare per postare il proprio lavoro. Aspettiamo un'admin, così farà lui luce ;)
 
E allora posto anche io:
Python:
Codice:
def Div(num):
    div = []
    for i in range(2,num):
        if num%i == 0:
            div.append(i)
    return div

C++:
Codice:
#include <iostream>
using namespace std; 

int Div() {
    for (int i = 2; i < arg; i++){
        if (arg % i == 0) {
                cout << i;
        }
    }
}
Vorrei un consiglio su quest'ultimo... Come si può ritornare un array?
 
se allocassi dinamicamente la memoria basterebbe poi un return array; e al posto di int Div mettere int* Div ;)
Dai un'occhiata qui: http://shurabozz.pastebin.com/f6a7efb88
 
[ot]E allora devo studiare malloc xD So pochissimo di allocazione dinamica. Mi fermo a new :p
(int*)calloc(len, sizeof(int))
e
(int*)realloc(array, ++len*sizeof(int))
mi sono incomplensibili.
perché nel secondo realloc premetti (int*)? Cosa vuol dire?
Grazie dell'aiuto ;)
[/ot]
 
Stato
Discussione chiusa ad ulteriori risposte.