首页 > 代码库 > 【ThinkingInC++】20、关于C的习题(2)

【ThinkingInC++】20、关于C的习题(2)

/**
*功能:编写一个程序使用两重for循环和模运算符(%)去寻找和输出质数(只能被1和它本身
*整除的整数)。
*时间:2014年8月15日08:19:48
*作者:cutter_point
*/

#include<iostream>
#include<cstdlib>

using namespace std;

//写一个函数输出质数(只能被1和它本身*整除的整数)
void printZhiShu(int n)      //给出0到多少的数之间的质数
{
    cout<<1<<"\t是质数\n";
    //使用两重for循环,模运算符(%),1不用想
    //一层循环是重2到n这些数字一个个找
    for(int i=2 ; i <= n ; ++i)
    {
        //重2到它本身就只有他本身可以取模为0
        for(int j=2 ; j <= i ; ++j)
        {
            int m=i%j;  //对j取模
            if(j != i && m==0)
            {
                break;  //如果不是质数立马排除
            }
            cout<<i<<"\t是质数\n";
            break;
            /*
            else if(j == i && m == 0)    //结果遍历到了本身才能被整除那么就是质数
            {
                cout<<i<<"\t是质数\n";
            }
            */
        }
    }
}

int main()
{
    while(1)
    {
        int i=0;
        cout<<"输入你想求在什么范围内的数是否是质数(0退出程序):";
        cin>>i;
        if(i < 0)
        {
            cout<<"请不要输入负数!!"<<endl;
            continue;
        }
        else if(i == 0)
            break;
        else
        {
            printZhiShu(i);
        }

    }

    system("pause");
    return 0;
}