|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这是一个将非质数拆除几个质数相乘的程序,我的代码基本思路是先将这个非质数拆成一个质数乘上另一个数,
如果另一个数是非质数就重复刚刚的操作,直到所有数都是质数,所以代码里面有很多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;
- }
复制代码
|
|