Name: ____________________________________________________ Alpha: _____________________

Describe help received: _________________________________________________________________

- {20pts} Assuming the following function prototypes and variable definitions, write each expressions's
**type**and**value**.**Note:**each expression should be taken as independent. I.e. if one expression modifies some variable values, those modifications do not carry over to the next expression.

```
// Function prototypes - each of these functions does what the name says it does
int abs(int j); // returns "absolute value" of j. defined in library cstdlib
double round(double x); // returns x rounded to nearest integer. defined in library cmath
string to_string(int val); // returns string representing val. defined in library string
// Note: only there in a newer version of C++ than we're using.
// Variable definitions
int k = 2;
double x = 2.75;
string s = "hello";
```

expression |

`k + abs(-2)` |

`x + abs(-2)` |

`round(x) + k` |

`k = round(x)` |

`s + to_string(k + 3)` |

`to_string(int(round(x)))` |

`(5 + 8)/round(x - 1)` |

`k++ < x` |

`++k < x` |

`k++ < x && k > x` |

{80pts} This program is missing the definition of the function

`firstfactor`

. Complete the program by defining the function (a description of what the function is supposed to do is given in the source code's comments). When your program is working correctly, a typical run might look like this:`Enter an integer larger than 1: 60 The factorization of 60 is (2)(2)(3)(5)`

**Turn in** a printout of this cover sheet with your answers to the questions, your source code, and a screen capture of your program running the input 21978.

**Challange** modify the program so that it prints multiple factors with an exponent, rather than repeated, so that the factorization of 40 would be given as (2)^3(5) rather than (2)(2)(2)(5).