带默认形参值的函数和函数的嵌套调用

 定义一个函数,判断一个整数是否为素数,使用如下函数头:bool Is_prime(int num) ,如果num是素数函数返回true,否则返回false。
 定义另一个函数Print,函数有一个参数n,类型为整形,打印小于等于n的所有素数,当用户没有指定n的值时,默认打印100以内的所有素数。
 主函数中,提示用户输入一个整数n,当用户输入n大于0时,先调用Print,然后继续提示用户输入一个整数n;直到用户输入0时,退出程序。

哪一步搞不定啊?
输入条件里没有说输入的n如果小于0时如何处理

#include <iostream>
using namespace std;
bool Is_prime(int num)
{
    if(num<2)
      return false;
    for(int i=2;i*i<=num;i++)
      if(num%i==0)
          return false;
    return true;
}
void Print(int n)
{
    for(int i=2;i<=n;i++)
        if(Is_prime(i))
            cout<<i<<endl;
}
int main()
{
提示用户输入一个整数n,当用户输入n大于0时,先调用Print,然后继续提示用户输入一个整数n;直到用户输入0时,退出程序
    int n;
    cout<<"请输入一个整数:";
    cin>>n;
    while(n!=0)
    {
        if(n>0)
            Print(n);
        cout<<"请继续输入一个整数:");
        cin>>n;
    }
    return 0;
}
#include <iostream>
#include <cmath>

using namespace std;

bool Is_prime(int num)
{
    if (num < 2)
        return false;
    int n = static_cast<int>(sqrt(num));
    for (int i = 2; i <= n; i++)
        if (num % i == 0)
            return false;
    return true;
}

void Print(int n = 100)
{
    for (int i = 2; i <= n; i++)
        if (Is_prime(i))
            cout << i << ' ';
    cout << endl;
}

int main()
{
    int n;
    while (1)
    {
        cout << "Input: ";
        if (cin >> n)
        {
            if (n == 0)
                break;
            if (n > 0)
                Print(n);
        }
        else
        {
            break;
        }
    }
    return 0;
}