大佬们看看我这个代码可以怎样改进吗
这是一个将非质数拆除几个质数相乘的程序,我的代码基本思路是先将这个非质数拆成一个质数乘上另一个数,如果另一个数是非质数就重复刚刚的操作,直到所有数都是质数,所以代码里面有很多goto语句,希望大佬们能改进改进,谢谢!
#include<stdio.h>
int main()
{
long long int a,b,c,d,i,e,f;
e=0;
f=0;
a=1;
b=2;
c=600851475143;
start:
for(i=b;i<c;i++)
{
if(c%i==0)
{
a=c/i;
if(i==2)
{
printf("2 ");
goto start1;
}
else
{
for(d=2;d<i;d++)
{
if(i%d==0)
{
b=i;
goto start;
e=1;
}
}
if(e==0)
{
printf("%lld ",i);
goto start1;
}
}
}
}
start1:
for(d=2;d<a;d++)
{
if(a%d==0)
{
c=a;
goto start;
f=1;
}
}
if(f==0)
{
printf("%lld ",a);
}
return 0;
} #include <stdio.h>
int main(void) {
long long int a, b, c, d, i, e, f;
e = 0;
f = 0;
a = 1;
b = 2;
c = 600851475143;
start:
for(i = b; i < c; i++) {
if(c % i != 0) continue;
a = c / i;
if(i == 2) {
printf("2 ");
break;
}
for(d = 2; d < i; d++) {
if(i % d != 0) continue;
b = i;
goto start;
//e = 1; // ???
}
if(e != 0) continue;
printf("%lld ", i);
break;
}
for(d = 2; d < a; d++) {
if(a % d != 0) continue;
c = a;
goto start;
//f = 1; // ???
}
if(f == 0) printf("%lld ", a);
return 0;
}
你的代码中,第29行、47行
在做什么?
人造人 发表于 2022-12-23 17:47
你的代码中,第29行、47行
在做什么?
是用来判断这个数是不是质数的 人造人 发表于 2022-12-23 17:47
你的代码中,第29行、47行
在做什么?
哦哦哦,多余了,谢谢大佬指教
页:
[1]