首页 > ACM题库 > 九度OJ > 九度-1047-素数判定[解题代码]
2013
12-12

九度-1047-素数判定[解题代码]

题目来源:2009年哈尔滨工业大学计算机研究生机试真题

题目描述:

给定一个数n,要求判断其是否为素数(0,1,负数都是非素数)。

输入:

测试数据有多组,每组输入一个数n。

输出:

对于每组输入,若是素数则输出yes,否则输入no。

样例输入:
13
样例输出:
yes

cpp 代码如下:
//简单的素数判断.....

#include <iostream>
#include <cmath>

using namespace std;
int N;

void solve()
{
        if(N<=1){cout<<"no"<<endl;return;}
        else 
        {
                int M =(int)sqrt((double)N);
                for(int i = 2; i<=M; i++)
                        if(N%i == 0)
                        {
                                cout<<"no"<<endl;
                                return;
                        }
        }
        cout<<"yes"<<endl;
}

int main()
{

        while(cin>>N)
        {
                solve();
        }
        return 0;
}
/**************************************************************
	Problem: 1047
	User: coder
	Language: C++
	Result: Accepted
	Time:10 ms
	Memory:1524 kb
****************************************************************/


  1. 题目需要求解的是最小值,而且没有考虑可能存在环,比如
    0 0 0 0 0
    1 1 1 1 0
    1 0 0 0 0
    1 0 1 0 1
    1 0 0 0 0
    会陷入死循环

  2. 第二个方法挺不错。NewHead代表新的头节点,通过递归找到最后一个节点之后,就把这个节点赋给NewHead,然后一直返回返回,中途这个值是没有变化的,一边返回一边把相应的指针方向颠倒,最后结束时返回新的头节点到主函数。