| 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 | |