C语言输入n个值,找出小于n的所有素数及它们的反序数
输入n个值,找出小于n的所有素数及它们的反序数
怎么理解?输入10个值,要找出其中小于10的素数的意思吗?
// 素数
bool isprime(long long m)
{
for (long long i = 2; i * i <= m; i++)
{
if (m & (i - 1) == 0)
{
return false;
}
}
return true;
}
#include<stdio.h>
#include <stdlib.h>
int Reverse(int n){
int b;
int d = 0;
while (n)
{
b = n % 10;
d = d * 10 + b;
n = n / 10;
}
return d;
}
int main()
{
int *primes_array = NULL;
int num = 0,i = 0,j = 0,index = 0,flag = 0;
printf("please enter a num (2 <= n <= 100000) :\n");
scanf("%d",&num);
if(num < 2){
printf("too small !!\n");
return 0;
}
if(num > 100000){
printf("too larger !!\n");
return 0;
}
primes_array =(int *)malloc(num*sizeof(int));
for(i=0;i<num;i++)
primes_array[i] = 0;
primes_array[0] = 2;
index = 0;
for(i=2;i<=num;i++)
{
for(j=0;j<=index;j++){
flag = i % primes_array[j];
if(flag == 0)
break;
}
if(flag){
index ++;
primes_array[index] = i;
}
}
printf("the prime nums are (n < %d ):\n",num);
for(i=0;i<=index;i++)
{
printf("%d,\n",primes_array[i]);
}
printf("the Reverse nums are (n < %d ):\n",num);
for(i=0;i<=index;i++)
{
printf("%d,\n",Reverse(primes_array[i]));
}
free(primes_array);
return 0;
}
运行结果: