| | 241 | |
| | 242 | ===== Fichier de soumission ===== |
| | 243 | *nombresPremiers.submit* |
| | 244 | |
| | 245 | {{{ |
| | 246 | universe = vanilla |
| | 247 | |
| | 248 | executable = nombresPremiers.sh |
| | 249 | |
| | 250 | # Arguments à passer à l'executable |
| | 251 | arguments = 100 |
| | 252 | |
| | 253 | # Fichier de sortie à rappatrier depuis les nœuds d'execution |
| | 254 | output=results.output.$(Process) |
| | 255 | error=results.error.$(Process) |
| | 256 | log=results.log |
| | 257 | |
| | 258 | should_transfer_files=YES |
| | 259 | when_to_transfer_output = ON_EXIT |
| | 260 | |
| | 261 | queue |
| | 262 | |
| | 263 | }}} |
| | 264 | |
| | 265 | ===== Fichier exécutable ===== |
| | 266 | |
| | 267 | *nombresPremiers.sh* |
| | 268 | |
| | 269 | {{{ |
| | 270 | #!/bin/sh |
| | 271 | |
| | 272 | limit=${1} |
| | 273 | echo "Les nombres premiers entre 1 et ${limit} sont :" |
| | 274 | |
| | 275 | # Utilisation du crible d'Ératosthène pour trouver les nombres premiers jusqu'à "limit" |
| | 276 | sieve=( $(seq 2 $limit) ) |
| | 277 | count=0 |
| | 278 | |
| | 279 | for ((i=2; i*i<=limit; i++)) |
| | 280 | do |
| | 281 | if [ ${sieve[$i-2]} -ne 0 ] |
| | 282 | then |
| | 283 | for ((j=i*i; j<=limit; j+=i)) |
| | 284 | do |
| | 285 | sieve[$j-2]=0 |
| | 286 | done |
| | 287 | fi |
| | 288 | done |
| | 289 | |
| | 290 | # Affichage des nombres premiers restants |
| | 291 | for num in "${sieve[@]}" |
| | 292 | do |
| | 293 | if [ $num -ne 0 ] |
| | 294 | then |
| | 295 | echo -n "$num " |
| | 296 | count=$((count + 1)) |
| | 297 | |
| | 298 | if [ $count -eq 50 ] |
| | 299 | then |
| | 300 | echo |
| | 301 | count=0 |
| | 302 | fi |
| | 303 | fi |
| | 304 | done |
| | 305 | |
| | 306 | echo # Saut de ligne final si nécessaire |
| | 307 | |
| | 308 | }}} |
| | 309 | |