CS 670, Homework 1. Due: Tuesday, January 15 at 11:59pm. Points: 20 HW points. For questions (1), (2), (5) - put those answers in your hw1.txt file. For qeustions (3), (4) - create those programs and leave them in ~yourusername/cs670/handin/ (1) Name: (2) List anyone that you talked to or worked with on your HW. Remember to review the policy in the syllabus on collaborating on HW's. Collaborators: (3) Create a C program to determine whether a number is perfect or not. Call the program perfect.c, and leave it in ~yourusername/cs670/handin/ when you are done. A number is perfect if it is equal to the sum of all of its factors other than itself. For example, 6 = 3+2+1 is perfect. Also, 28 = 14+7+4+2+1 is perfect. Your program should take the number n as a command line argument. Get the program working first as a normal single-threaded program. Once that is working, make the program multi-threaded using OpenMP. (4) Modify your program from (3) so that it counts the number of perfect numbers <= the input value. So running your program with n=10 would return 1 (there is 1 perfect number <= 10, namely 6). Running the program with n=28 would return 2 (because 6 and 28 are perfect). Call the program perfectCount.c, and leave it in the handin directory when you are done. The program should take n as a command line argument. (5) For your program from (4), what is the largest value of n (a) where your program finishes in 1 second, (b) where your program finishes in 10 seconds, (c) where your program finishes in 1 minute? And what are the counts returned for those values of n?