C语言求1到n所有质数

将正整数 N 作为输入并翻转数字。统计所有比翻转数字小的质数并打印。(如果翻转数字也是质数包括翻转转数字)如图所示

#include<stdio.h>

int main()

{ int i,j,n,m;

  scanf("%d",&n);

  for(m=0;n;n/=10)m=m*10+n%10;

  if(m>1)printf("2 ");

  for(i=3; i<=m; i+=2)

    { for(j=3;j*j<=i;j+=2)

        if(i%j==0)j=i;

      if(j*j>i)printf("%d ",i);  

    }

  return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2022-07-03

按照题目要求编写的程序如下(见图)

第2个回答  2023-03-08
以下是C语言代码实现:

```c
#include <stdio.h>

// 判断是否为质数
int is_prime(int num) {
if (num <= 1) { return 0; }
for (int i = 2; i * i <= num; i++) {
if (num % i == 0) { return 0; }
}
return 1;
}

// 翻转数字
int reverse_number(int num) {
int reversed = 0;
while (num > 0) {
reversed = reversed * 10 + num % 10;
num /= 10;
}
return reversed;
}

int main() {
int n;
printf("请输入一个正整数:");
scanf("%d", &n);

int count = 0;
for (int i = 2; i < n; i++) {
if (is_prime(i) && is_prime(reverse_number(i))) {
printf("%d ", i);
count++;
}
}

// 打印结果
printf("\n小于翻转数字的质数个数为:%d\n", count);
return 0;
}
```

输入一个正整数n,首先通过is_prime函数判断i是否为质数以及翻转后的数是否为质数,如果是则打印该数并累加count。最后输出小于翻转数字的质数个数。
第3个回答  2023-03-28
# python输出质数,每10个数换一行
def func_Prime():
a = int(input("请输入一个整数: "))
n = 0
counter = 0 #输出计数器
for x in range(2,a+1):
n = 0
for y in range(2,int(x)):
if(int(x) % int(y)) == 0:
n = n + 1
break
if n==0:
if counter < 9: # 输出10个以内数字,TAB符号分割
print(x,end="\t")
counter += 1
else: # 输出超过10个数字,换行分割
print(x,end="\n")
counter = 0
return
第4个回答  2022-07-05
#include<stdio.h>
#include<math.h>
int lsPrime(int n);
int main()
{
int N, i, k, n = 0;
printf("input N:\n");
scanf("%d", &N);
while (N != 0)
{
n = N % 10 + n * 10;
N = N / 10;
}
for (i = 1; i <= n; i++)
{
if (lsPrime(i) == 1)
{
printf("%d\t", i);
}
}
return 0;
}

int lsPrime(int n) //是素数返回1,否则返回0
{
int i, k;
k = (int) sqrt(n);
for (i = 2; i <= k; i++)
{
if (n % i == 0)
break;
}
if (i > k && n > 1)
return 1;
else
return 0;
}
相似回答