An integer is said to be divisible by another integer if the result of the division is also an integer. For example: 10 is divisible by 1, 2, 5 and 10: • 10 ÷ 1 = 10 • 10 ÷ 2 = 5 • 10 ÷ 5 = 2 • 10 ÷ 10 = 1 10 is not divisible by 4: • 10 ÷ 4 = 2.5 1, 2, 5 and 10 are said to be the divisors of 10. The iterative function IterativeCalculate() totals all the divisors of its integer parameter and returns this total. Example 1: if the parameter is 10, the total will be 18 (1 + 2 + 5 + 10) . Example 2: if the parameter is 4, the total will be 7 (1 + 2 + 4) . A pseudocode algorithm for IterativeCalculate() is shown. FUNCTION IterativeCalculate(Number : INTEGER) RETURNS INTEGER DECLARE Total : Integer DECLARE ToFind : Integer ToFind ← Number Total ← 0 WHILE Number <> 0 IF ToFind MODULUS Number = 0 THEN Total ← Total + Number ENDIF Number ← Number – 1 ENDWHILE RETURN Total ENDFUNCTION The operator MODULUS calculates the remainder when one number is divided by another.
- (a)(i)Write program code for IterativeCalculate(). Save your program as Question2_N23. Copy and paste the program code into part 2(a)(i) in the evidence document.[5]
- (a)(ii)Write program code to call IterativeCalculate() with 10 as the parameter and output the return value. Save your program. Copy and paste the program code into part 2(a)(ii) in the evidence document.[2]
- (a)(iii)Test your program. Take a screenshot of the output. Save your program. Copy and paste the screenshot into part 2(a)(iii) in the evidence document.[1]
- (b)(i)IterativeCalculate() has been rewritten as the recursive function RecursiveValue(). A pseudocode algorithm for RecursiveValue() is given. The function is incomplete. FUNCTION RecursiveValue(Number : INTEGER, ToFind : INTEGER) RETURNS INTEGER IF Number = . . . . . . . . . . . THEN RETURN 0 ELSE IF ToFind MODULUS Number = 0 THEN RETURN . . . . . . . . . + RecursiveValue(Number – 1, ToFind) ELSE . . . . . . . . . . . . . . . . RecursiveValue(Number – 1, . . . . . . . . .) ENDIF ENDIF ENDFUNCTION Write program code for RecursiveValue(). Save your program. Copy and paste the program code into part 2(b)(i) in the evidence document.[7]
- (b)(ii)Write program code to call RecursiveValue() with 50 as the first parameter and 50 as the second parameter and output the return value. Save your program. Copy and paste the program code into part 2(b)(ii) in the evidence document.[1]
- (b)(iii)Test your program. Take a screenshot of the output. Save your program. Copy and paste the screenshot into part 2(b)(iii) in the evidence document.[1]
Mark scheme
Marking points from the official mark scheme (Oct/Nov 2023). The mark or mark type is shown in brackets.
- [5] One mark each • Function header with parameter • Correct loop • Modulus calculation • Return of correct value at correct place • Remainder of function correct
- [2] One mark each • Calling IterativeCalculate(10) • Outputting return value
- [1] One mark for screenshot showing 18
- [7] One mark for each gap (5) One mark for recursive calls both accurate and in correct places One mark for remainder of function with nothing superfluous
- [1] One mark for calling RecursiveValue(50,50) and outputting return value
- [1] One mark for screenshot showing 93
Write your answer and get it marked
On Oracle Prep you can write or photograph your own answer and have it marked by AI against this mark scheme, with feedback on what you missed.
Sign up free →