2019-07-04 22:46:12 +02:00
|
|
|
|
2019-07-06 12:02:41 +02:00
|
|
|
#include <stdio.h>
|
|
|
|
|
|
2019-07-04 22:46:12 +02:00
|
|
|
// la somme des n premiers entiers
|
|
|
|
|
|
|
|
|
|
int triangular(int n)
|
|
|
|
|
//@ requires n >= 0;
|
2019-07-06 12:02:41 +02:00
|
|
|
//@ ensures result == n * (n + 1) / 2;
|
2019-07-04 22:46:12 +02:00
|
|
|
{
|
|
|
|
|
int s = 0;
|
2019-07-06 12:02:41 +02:00
|
|
|
for (int k = 0; k <= n; k++) {
|
|
|
|
|
//@ invariant k <= n + 1;
|
2019-07-04 22:46:12 +02:00
|
|
|
//@ invariant s == (k - 1) * k / 2;
|
|
|
|
|
//@ variant n - k;
|
|
|
|
|
s += k;
|
|
|
|
|
}
|
|
|
|
|
return s;
|
|
|
|
|
}
|
|
|
|
|
|
2019-07-06 12:02:41 +02:00
|
|
|
int triangular2(int n)
|
2019-07-06 17:57:25 +02:00
|
|
|
/*@ requires n >= 0;
|
|
|
|
|
@ ensures result == n * (n + 1) / 2;
|
|
|
|
|
@ variant n; */
|
2019-07-06 12:02:41 +02:00
|
|
|
{
|
|
|
|
|
if (n == 0) return 0;
|
|
|
|
|
return n + triangular2(n - 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
|
printf("somme 1 + .. + 100 = %d\n", triangular(100));
|
|
|
|
|
printf("somme 1 + .. + 100 = %d\n", triangular2(100));
|
|
|
|
|
return 0;
|
|
|
|
|
}
|