关于对循环的优化问题,求大佬相助!
题目描述对于一个大合数进行分解,合数小于10^11,按递增输出合数的质(素)因子。
stone:对于流水线(循环)优化非常重要。
输入格式
只有一行,一个合数n (1<n<10^11)
输出格式
递增的质因子
例如:
输入 20
输出 2 5
代表一共有两个质因子,分别是 2 5
以上是题目,以下是我写的代码:
程序代码:
#include <stdio.h> #include <math.h> int main(void) { long long a; long long i,j; scanf("%lld",&a); for(i=2;i<a;i++) { if(a%i==0) { for(j=2;j<=sqrt(i);j++) { if(i%j==0) break; } if(j>sqrt(i)) printf("%lld ",i); } } return 0; }
但是我这个代码在输入超过9位的数之后运行的很慢,
请各位大佬指点下如何进行循环的优化,不甚感激。