程序中止-从文件中读取的数字的素数
Program aborts - Prime factor of numbers read from a file
此代码将数字分解为素数。
这些数字取自一个文件。文件中的第一个数字表示文件中元素的数量,这些数字来自区间[1,10^18]。
代码的问题是,在读取和分解一些数字后,它会停止。它旨在分解100到1000之间的数字,其中至少有一半大于10^9。
我怀疑堆栈溢出,但我不能100%确定。为了解决这个内存分配问题,我想听听一些建议。非常感谢。
#include <iostream>
#include <stdio.h>
using namespace std;
void print_recurenta(int a,int i)
{
if((a==1)||(i>a))
return;
if(a%i==0)
{
printf("%d ",i);
a=a/i;
print_recurenta(a,i);
}
else
{
i++;
print_recurenta(a,i);
}
}
void factor_printf(int nr)
{
printf("n%ld ",nr);
int i=2;
print_recurenta(nr,i);
}
int main()
{
int numere;
int nr=0;
FILE* f=fopen("input.txt","r");
if(f==0)
return -1;
fscanf(f,"%d",&numere);
while(fscanf(f,"%d",&nr)!=EOF)
{
fscanf(f,"%d",&nr);
factor_printf(nr);
}
return 0;
}
如果我们在循环中寻找下一个因素,这个问题CAN可以递归解决:
void print_recurenta(__int64 a, __int64 i)
{
if (a == 1)
return;
if (i*i > a)
{
printf("%llu ", a);
return;
}
if (a%i == 0)
{
printf("%llu ", i);
a = a / i;
}
else
{
for (++i; i*i < a && (a%i != 0); ++i)
;
}
print_recurenta(a, i);
}
相关文章:
- 如何在 C++ 中将文件中的逗号分隔数字读取到数组中?
- 从.txt文件中读取浮点型数字并在公式中使用它们
- 如何从保存在 Java 中C++的字节数组中读取数字?
- 为什么我的程序在读取/写入文件时会删除最重要的数字?
- C++:从文件中读取字符串和整数,并获得最大数字
- 如何读取具有数字间隔的文本文件?C++
- 如何将uint8_t的二进制表示形式读取为数字
- C++ - 将 int 读取为字母和数字序列
- 在c++中读取文件时,它如何自动将字符放入字符数组,将数字放入整数变量
- 我可以从具有不同数字分隔符的istream中读取双值吗
- 如何从文件中读取用空格分隔的数字
- 从文本文件中的每一行读取数字,并计算数字重复的次数
- 将任意大小的大量 Base-10 数字读取到位集中
- 无需使用循环,就将ISBN-10的前9位数字读取为字符串并计算第10位数字
- 将字符串和数字读取到向量C
- C++ 将文件中的数字读取到数组中,然后将其打印到其他数组中
- 将数字读取到矢量
- (c++)试图将数字读取到数组中,在输出中得到垃圾数字
- 在读取文件时,在增加数组大小的同时,将浮点数字读取到动态分配的中
- 猜数字 - 读取错误时无限循环