标签:ace ios clu using 合数 设置 问题 family for循环
[题目]
Torry从小喜爱数学。一天,老师告诉他,像2、3、5、7……这样的数叫做质数。Torry突然想到一个问题,前10、100、1000、10000……个质数的乘积是多少呢?他把这个问题告诉老师。老师愣住了,一时回答不出来。于是Torry求助于会编程的你,请你算出前n个质数的乘积。不过,考虑到你才接触编程不久,Torry只要你算出这个数模上50000的值。
[思路]
1、用一个循环来判断是否是质数,如果是,就累积相乘,直到是第n个质数
[代码]
1 #include <iostream> 2 using namespace std; 3 4 5 long isPrime(int N); 6 7 int main(void){ 8 int N; // 第n个质数 9 10 cin >> N; 11 cout << isPrime(N); 12 13 14 return 0; 15 } 16 17 long isPrime(int N){ 18 int i, j, n = 0; 19 long p = 1; 20 21 22 for (i = 2; ; i++){ 23 for (j = 2; j < i; j++){ 24 if (i % j == 0){ 25 // 说明是合数, 跳出本for循环,开始判断下一个数 26 break; 27 } 28 } 29 if (j == i){ 30 n++; 31 p = p * i; 32 if (n == N) 33 break; 34 } 35 36 } 37 p %= 50000; 38 }
[总结]
1、判断是否是质数的for循环一定要会;
2、累乘时变量的初始值要设置成1。
标签:ace ios clu using 合数 设置 问题 family for循环
原文地址:http://www.cnblogs.com/lemonno/p/6719118.html