【编程题】质数因子
功能:输入一个正整数,按照从小到大的顺序输出它的全部质数的因子(如180的质数因子为2 2 3 3 5 )
输入描述:
输入一个long型整数
输出描述:
按照从小到大的顺序输出它的全部质数的因子,以空格隔开
输入例子:
180
输出例子:
2 2 3 3 5
本人的代码while (n > 1)条件下再判断if (n % p == 0),编译器报错:段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(例如,递归调用层数太多)等情况引起,为什么不可以这样写啊,不懂,求指导
功能:输入一个正整数,按照从小到大的顺序输出它的全部质数的因子(如180的质数因子为2 2 3 3 5 )
输入描述:
输入一个long型整数
输出描述:
按照从小到大的顺序输出它的全部质数的因子,以空格隔开
输入例子:
180
输出例子:
2 2 3 3 5
本人的代码while (n > 1)条件下再判断if (n % p == 0),编译器报错:段错误:您的程序发生段错误,可能是数组越界,堆栈溢出(例如,递归调用层数太多)等情况引起,为什么不可以这样写啊,不懂,求指导
#include <iostream> #include <vector> using namespace std; int main() { long n; int i = 0, p = 2; vector <int> a; while (cin >> n) { while (n > 1) { if (n % p == 0) { n = n / p; a[i] = p; ++i; } else ++p; } for (int i = 0; i < a.size(); ++i) cout << a[i] << " "; } return 0; }
解决方案
5
之前vector用法错误,可以改成a.push_back(p);
建议lz好好理解下vector是什么
建议lz好好理解下vector是什么
10
眼过千遍不如手过一遍!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步Debug版对应汇编一行!
单步Debug版对应汇编千行不如单步Release版对应汇编一行!
不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建全部,然后在IDE中运行。(一般人本人不告诉他!
书看千行不如手敲一行!
手敲千行不如单步一行!
单步源代码千行不如单步Debug版对应汇编一行!
单步Debug版对应汇编千行不如单步Release版对应汇编一行!
不会单步Release版对应汇编?在你想单步Release版C/C++代码片断的前面临时加一句DebugBreak();重建全部,然后在IDE中运行。(一般人本人不告诉他!
40
新改这个本人帮你调试了,没问题啊
5
改的不错。
5
vector是可以用下标访问,但你的代码而言,在赋值时,用下标可能导致越界。push_back会自增长,用下标不会。