c - 输入数的前身有多少是素数?
问题描述
/* 用 C 编程语言编写一个程序,其中从键盘输入两个自然数 K 和 T,K 必须是一位数,T 必须是两位数。对于每一个输入的两位数T,屏幕上显示是否有K个其前任是质数的信息。输入数字的顺序会因输入任何不符合指定条件的值而中断。如果没有输入任何正确的数字对,请在屏幕上写下相应的信息。*/
#include<stdio.h>
int main(void)
{
int k,t,s=0,i,j,count;
do
{
printf("\nenter one one-digit and one two-digit number.\n");
scanf("%d%d",&k,&t);
s++;
count=0;
for(i=1; i<=t; i++)
{
for(j=2; j<=t/2; j++)
{
if(j%i==0)
count++;
}
}
if(count==k)
printf("\nentered number %d has %d predecessors which are prime numbers.",t,k);
else
printf("\nentered number %d does not have %d predecessors which are prime numbers.",t,k);
}
while(k<10 && k>0 && t>9 && t<100);
if(s==1)
printf("\nuncorrect pair was entered.");
}
我尝试以这种方式解决它,但代码不起作用,我不知道为什么
预期输出,例如。k=8 和 t=21 输入的数字 21 有 8 个前身,它们是素数。
解决方案
替换了你的for
for (i = 2; i <= t; i++) {
int isPrime = 1;
for (j = 2; j < t; j++) {
if (i % j == 0 && i != j) {
isPrime = 0;
break;
}
}
if(isPrime)
count++;
}
推荐阅读
- spring - 为什么 Spring 的 PathMatchingResourcePatternResolver 没有匹配“*”?
- angular - 如何在 Ionic App 上停止自动下载和保存图片和视频
- cmake - 将 gsl 作为 3rd 方动态库与使用 CPack 生成的 Debian 包一起提供
- graph - 如何在 Neo4j 图形数据库上使用 Cypher 解决最常见的路径类问题
- javascript - 表单中的 Javascript 变量
- reactjs - Material UI:带有可扩展侧边菜单的抽屉
- javascript - 使用 Vue.JS 和 Node.JS 时未定义 Axios 授权标头
- android - Android 上的 Firebase 正在使用哪些 URL
- slack - WebClient files.upload 失败,无法读取未定义的属性“名称”
- javonet - javanet 是否支持 java 9、10 和 11