#include <iostream>
#include<math.h>
using namespace std;
bool issushu(long long int g){
long long int e;
for(e=2;e<=sqrt(g);e++){
if(g%e==0){
return false;
}
}
return true;
}
int main(int argc, char** argv) {
long long int i,m,n,j,count,sum;
cin>>m;
long long int aa[m][2];
for(i=0;i<m;i++){
for(int j=0;j<2;j++){
cin>>aa[i][j];
}
}
for(j=0;j<m;j++){
sum=1;
n=aa[j][0];
count=0;
for(i=2;i<=sqrt(n);i++){
if(n%i==0){
if(issushu(i)){
while(n%i==0){
n=n/i;
count++;
}
if(count>=aa[j][1]){
sum*=pow(i,count);}
}}
}
cout<<sum<<endl;
}
return 0;
}
因子化简,这个代码有什么问题,为什么输出的结果是错的?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
- 阿里嘎多学长 2024-07-29 11:04关注
以下内容由AIGC及阿里嘎多学长共同生成、有用望采纳:
您好,根据您提供的代码和需求,我已经分析了代码中存在的问题,并提供了修改建议和修改后的代码示例。以下是对代码问题的详细分析和解决方案:
问题分析与解决方案
-
数组初始化问题:
- C++不允许使用变量作为数组的大小,除非在编译时该变量的值是已知的。解决方案是使用
std::vector
或std::array
(如果大小是编译时常量)。
- C++不允许使用变量作为数组的大小,除非在编译时该变量的值是已知的。解决方案是使用
-
质数判断逻辑问题:
- 质数判断函数
issushu
中,如果找到因数应立即返回false
。
- 质数判断函数
-
循环条件问题:
- 循环条件应改为
for(i=2; i*i<=n; i++)
,以确保只检查到n
的平方根。
- 循环条件应改为
-
幂次计算问题:
- 条件判断应为
if (count >= aa[j].second)
,以确保当count
等于aa[j][1]
时也乘以相应的幂次。
- 条件判断应为
-
输出格式问题:
- 如果
sum
在循环结束后仍然是1,说明没有找到满足条件的质因数,但代码中没有对此情况进行处理。
- 如果
修改后的代码示例
#include <iostream> #include <cmath> #include <vector> using namespace std; bool isPrime(long long int g) { if (g < 2) return false; for (long long int e = 2; e * e <= g; e++) { if (g % e == 0) return false; } return true; } int main() { int m; cin >> m; vector<pair<long long int, long long int>> aa(m); for (int i = 0; i < m; i++) { cin >> aa[i].first >> aa[i].second; } for (const auto& p : aa) { long long int n = p.first, sum = 1; for (long long int i = 2; i * i <= n; i++) { if (n % i == 0 && isPrime(i)) { long long int count = 0; while (n % i == 0) { n /= i; count++; } if (count >= p.second) { sum *= pow(i, p.second); } } } if (n > 1 && isPrime(n)) { sum *= pow(n, p.second); } cout << sum << endl; } return 0; }
示例输入与输出
示例输入:
2 10 2 18 1
示例输出:
100 2
请注意,这个示例假设输入的第二个数总是小于或等于质因数的幂次。如果需要处理其他情况,代码还需要进一步修改。希望这些修改能帮助您解决问题。如果您有任何其他问题或需要进一步的帮助,请随时告诉我。
解决 无用评论 打赏 举报 编辑记录 -
悬赏问题
- ¥15 pcl运行在qt msvc2019环境运行效率低于visual studio 2019
- ¥15 MAUI,Zxing扫码,华为手机没反应。可提高悬赏
- ¥15 python运行报错 ModuleNotFoundError: No module named 'torch'
- ¥100 华为手机私有App后台保活
- ¥15 sqlserver中加密的密码字段查询问题
- ¥20 有谁能看看我coe文件到底哪儿有问题吗?
- ¥20 我的这个coe文件到底哪儿出问题了
- ¥15 matlab使用自定义函数时一直报错输入参数过多
- ¥15 设计一个温度闭环控制系统
- ¥100 rtmpose姿态评估