【发布时间】:2012-09-04 18:46:01
【问题描述】:
我正在编写代码以求两个数 n 和 k 的公约数个数。
我正在使用找到 GCD g 然后找到 GCD 的除数的方法来实现它。
但是代码编译但在运行时给出了一个没有响应的消息:(
我对此感到震惊.. 任何人都可以帮助调试.. 提前致谢
#include<iostream>
#include<cstdio>
#include<cmath>
#include<cstring>
#include<vector>
using namespace std;
vector<bool>p(1000002,true);
long int getgcd(long int a, long int b)
{ if(b == 0)
return a;
else
return getgcd(b, a % b);
}
void prime()
{ int i,j;
for(i=2;i<1000001;i++)
if(p[i])
for(j=i*i;j<1000001;j=j+i)
p[j]=false;
p[0]=false;
p[1]=false;
}
void divfind(long int a, long int b)
{
long int g;
g = getgcd(a,b);
int i,s,j=0,ans=1,num=0;
//short int fo[1000000];
s=(int) sqrt(g);
for(i=2;i<s+1;i++)
if(p[i])
{
while(g%i==0)
{g=g/i;
num++;
}
if(num)
ans*=++num;
num=0;
}
printf("%d\n",ans);
}
int main()
{
prime();
long int n;
int q;
scanf("%ld %d",&n,&q);
while(q--)
{
int t;
long int k;
scanf("%d%ld",&t,&k);
if(t==1)
divfind(n,k);
// else if(t==2)
// divi(n,k);
// else
// nodivi(n,k);
}
return 0;
}
【问题讨论】:
-
不运行或不编译?如果它编译,那么它可能会运行......(不一定到你想要的最后)。
-
它编译但不运行.. 具体来说它没有响应
-
尝试删除divfind(),还是没有反应?
-
即使在删除 divfind() 之后它也没有响应 在 ideone 上工作令人惊讶!因为它既不适用于 devcpp 也不适用于 codeblcoks
标签: c++ primes factorization