#include #include using namespace std; //Topic: Passing by reference //change value of given first variable to become num1*num2. void multiplyBy(double &num1, double num2) { num1 = num1 * num2; //for fun... won't change variable from main num2 = -999; } //Increase value of num1 by value of num2. //(but num2 shoudlnt' change...) //So, pass num1 by reference (so we can change it) //But don't need to pass num2 by reference (since it isn't supposed to change) //So we'll pass num2 by value void increaseBy(int &num1, int num2) { num1 = num1 + num2; } //make given char variable to be //the capital version of itself void makeCapital(char &letter) { letter = letter - 32; } //return true if n is prime //return false if n is not prime //How efficient is this? //run time is: O( sqrt(n) ) bool isPrime(int n) { for (int i = 2; i < sqrt(n); i++) { if (n % i == 0) //modulus operator { return false; } } return true; } int main() { //Review passing by reference double x = 7; double y = 3.14; multiplyBy(x, y); cout << x << endl; //should be 7*3.14 cout << y << endl; //should still be 3.14 int z = 53; increaseBy(z, 21); cout << z << endl; //74 increaseBy(z, 5); cout << z << endl; //79 char letter2 = 'd'; makeCapital(letter2); cout << letter2 << endl; // D //uh oh, let's do something bad.. letter2 = 'R'; makeCapital(letter2); cout << letter2 << endl; // ??? //Let's implement isPrime(n) cout << isPrime(9) << endl; //false cout << isPrime(5) << endl; //true cout << isPrime(77) << endl; //false cout << isPrime(163) << endl; //true listPrimes(100); return 0; }