关于#c语言#的问题:并按照质数因子从小到大顺序以乘积形式输出

对90 ~ 100以内的所有整数,逐一对其进行质因子分解,并按照质数因子从小到大顺序以乘积形式输出,如90=12335 如果该整数是一个素数,则其质因子为其本身,例如97相应输出97=1*97。

【输入形式】

【输出形式】

90=12335。

该回答引用ChatGPT

#include <stdio.h>

int main() {
    for (int i = 90; i <= 100; i++) {
        int num = i;
        printf("%d=", num);
        for (int j = 2; j <= num; j++) {
            while (num % j == 0) {
                printf("%d", j);
                num /= j;
                if (num != 1) {
                    printf("*");
                }
            }
        }
        if (num == i) {
            printf("1*%d", i);
        }
        printf("\n");
    }
    return 0;
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7765584
  • 除此之外, 这篇博客: C语言重点练习题之数组篇中的 2.有100个数字的数组分别是1~100,现在要求用二分查找去找一个数(自己输入),要求找出这个数字的下标及查找了几次 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:
    #include<stdio.h>
    int Init_array(int arr[]){      //初始化数组
    	int num = 1;
    	for(int i = 0; i < 100; i++){
    		arr[i] = num;
    		num++;
    	}
    }
    
    int binary_rearch(int *arr,int n){      //二分查找
    	int count = 0,max,min,mid,len = 100;
    	int sub;
    	max = arr[len-1]; min = arr[0];
    	while(min <= max){
    		mid = (max+min)/2;
    		count++;
    	    if(n < arr[mid]){
    			max = mid-1;
    		}
    		else if(n > arr[mid]){
    			min = mid+1;
    		}
    		else {
    			sub = mid;
    			printf("该数的下标为:arr[%d],共查找了%d次!\n",sub,count);
    			return 1;
    			}
    	}
    	return -1;
    }
    int main(){
    	int num[100],n;
    	printf("请输入你要找的数:\n");
    	scanf("%d",&n);
    	Init_array(num);
    	int flag = binary_rearch(num,n);
    	if(flag == -1)
    	  printf("该数没有找到!\n");
    	return 0;
    }
    
    

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^