解题思路:1和素数直接输出,而奇数和偶数需要不断的拆数至1。
参考代码:
#include <stdio.h> #include <math.h> int main(){ int num[10001] = {0}; int a,b; int i,j,k,t; num[2] = 1; for(i = 3; i <= 10000; i++){ for(j = 2; j <= sqrt(i); j++){ if(i%j == 0) break; } if(j > sqrt(i)) num[i] = 1; } scanf("%d %d", &a,&b); for(i = a; i <= b; i++){ if(num[i] == 1) //素数 printf("%d=%d", i,i); else if(i == 1) //1 printf("%d=%d", i,i); else{ //奇偶数 printf("%d=", i); t = i; for(j = 2; j <= i; j++){ if(num[j] == 1 && i%j == 0){ //因子是质数,且被整除 if(i/j == 1) //处理在末尾多输出一个*的问题 printf("%d", j); else printf("%d*", j); i /= j; //由当前因子推出该数的下一个因子 j = 1; //回溯 } if(i == 1) //拆分完成 break; } i = t; } printf("\n"); } return 0; }
0.0分
0 人评分
矩阵乘法 (C++代码)浏览:1662 |
printf基础练习2 (C语言代码)浏览:321 |
C语言程序设计教程(第三版)课后习题7.1 (C语言代码)浏览:539 |
简单的a+b (C语言代码)浏览:385 |
C语言程序设计教程(第三版)课后习题1.6 (C语言代码)浏览:732 |
1012题解浏览:938 |
A+B for Input-Output Practice (C语言代码)浏览:505 |
关于float,double变量的几点说明浏览:1926 |
DNA (C语言代码)浏览:440 |
剪刀石头布 (C++代码)浏览:1811 |