NOJ--- Find the Prime Number Again(1155)
2014-05-08 23:26
405 查看
传送 -------- http://cdn.ac.nbutoj.com/Problem/view.xhtml?id=1155
题意很纯粹 就是让你判断一个数 是不是素数 这句话 你是否正确理解 对你进行某个数的判断很重要
If the number is a prime number print "Yes", otherwise print "No" ---- 意思就是 如果是素数 输出 yes 不是就输出no
这里就涉及到一个好多小伙伴都犯错的数字 1 按照数学来说 它既不是素数 也不是合数 那么按照我刚刚上面的翻译 它不是素数 所以是输出no的
这题呢 还有一个坑点。。 很难发现的。。。
When the N is a non-postive number end of the input. ---- 只有当n <=0 时 才结束输入 而不是我们认为的当N==0 就结束输入
好了 上面这些 前戏 结束
迎来高潮 --- 神马的 素数筛选法 --- 可能自己有这概念 但很难一下子写出来 但当你看完我下面给你的代码 肯定能明白的 因为这段代码本身 还是很容易理解的
/*
参考:
首先把所有的数组元素初始化为全是素数,然后开始for循环。当我遇上某个数表示为素数时,那么它一定为素数。
反证一下:因为可以看到,在嵌套的while循环里,假如 a [ i ] 被判断为素数的那个数的倍数,那么它的倍数们全部被更正为合数,所以我最新碰到的那个数,假如不是素数,它就已经因为它的因子(为素数)被更新为合数了,所以遇上的一定是素数。
然后当for循环到结束,我们要的素数表就已经出来了。
*/
如果 有什么疑问 你可以在下面给我们留言 让我们的 sex god 看一眼 来 告诉你
题意很纯粹 就是让你判断一个数 是不是素数 这句话 你是否正确理解 对你进行某个数的判断很重要
If the number is a prime number print "Yes", otherwise print "No" ---- 意思就是 如果是素数 输出 yes 不是就输出no
这里就涉及到一个好多小伙伴都犯错的数字 1 按照数学来说 它既不是素数 也不是合数 那么按照我刚刚上面的翻译 它不是素数 所以是输出no的
这题呢 还有一个坑点。。 很难发现的。。。
When the N is a non-postive number end of the input. ---- 只有当n <=0 时 才结束输入 而不是我们认为的当N==0 就结束输入
好了 上面这些 前戏 结束
迎来高潮 --- 神马的 素数筛选法 --- 可能自己有这概念 但很难一下子写出来 但当你看完我下面给你的代码 肯定能明白的 因为这段代码本身 还是很容易理解的
/*
参考:
首先把所有的数组元素初始化为全是素数,然后开始for循环。当我遇上某个数表示为素数时,那么它一定为素数。
反证一下:因为可以看到,在嵌套的while循环里,假如 a [ i ] 被判断为素数的那个数的倍数,那么它的倍数们全部被更正为合数,所以我最新碰到的那个数,假如不是素数,它就已经因为它的因子(为素数)被更新为合数了,所以遇上的一定是素数。
然后当for循环到结束,我们要的素数表就已经出来了。
*/
#include <iostream> #include <cstring> using namespace std; #define inf 5000010 bool prime[inf]; void judge() { int temp,i; prime[0] = prime[1] = true; for(i = 2; i <= inf; i++) { if( !prime[i] ) { temp = i * 2; while(temp <= inf) { prime[temp] = true; temp += i; } } } } int main() { int n; memset( prime , false , sizeof(prime) ); judge(); while( ~scanf("%d",&n) ) { if( n<=0 ) break; printf( "%s\n",prime ?"No":"Yes"); } return 0; }
如果 有什么疑问 你可以在下面给我们留言 让我们的 sex god 看一眼 来 告诉你
相关文章推荐
- Find the number of subsets such that the sum of numbers in the subset is a prime number
- Google Treasure Hunt 2008---Find the Smallest Prime Number
- Google Treasure Hunt 2008---Find the Smallest Prime Number
- 素数遍历方法比较(Find the prime number, with performance monitoring function)
- Find the Prime Number
- Find all the prime number between 1 and 100
- leetcode——Find the Duplicate Number
- 287. Find the Duplicate Number
- [LeetCode] Find the Duplicate Number 寻找重复数
- leetcode Find the Duplicate Number
- Find the Duplicate Number
- leetcode -- Find the Duplicate Number-- 经典重点
- 阅读程序 回答问题——FindTheNumber
- Leetcode (287) Find the Duplicate Number
- Java实现-Find the Duplicate Number
- Hard-题目2:287. Find the Duplicate Number
- 287. Find the Duplicate Number
- lintcode 中等题:find the missing number 寻找缺失的数
- 【枚举+小技巧】【TOJ4115】【Find the number】
- Find the Duplicate Number